import pandas as pd import numpy as np import matplotlib.pyplot as plt # df = pd.DataFrame({'key1': ['a', 'a', 'b', 'b', 'a'], # 'key2': ['one', 'two', 'one', 'two', 'one'], # 'data1': np.random.randint(1, 10, 5), # 'data2': np.random.randint(1, 10, 5)}) # # print (df) # # print (df.data1) # # 对 Series 进行分组,通过索引对齐关联起来 # grouped = df['data1'].groupby(df['key1']) # print(grouped.mean()) # # grouped=df['data1'].groupby([df['key1'], df['key2']]) # # grouped=df.groupby(df['key1']) # # print(grouped.sum()) # for name,group in df.groupby('key1'): # print (name) # print (group) # # 根据key1分组可分为两个分组,a和b。可以直接迭代groupby(). # # 由于groupby()支持迭代器协议,可以将其转换为列表/字典 # dict(list(df.groupby('key1'))) # # 这个字典的元素 # dict(list(df.groupby('key1')))['a'] # df = pd.DataFrame(np.random.randint(1, 10, (5, 5)), # columns=['a', 'b', 'c', 'd', 'e'], # index=['Alice', 'Bob', 'Candy', 'Dark', 'Emily']) # # 赋值为非数字,观察对非数字的处理 # df.iloc[1, 1:3] = np.NaN # print(df) # # # 新建映射字典 # mapping = {'a': 'red', 'b': 'red', 'c': 'blue', 'd': 'orange', 'e': 'blue'} # # 新建字典,用字典映射分组 # grouped = df.groupby(mapping, axis=1) #映射是根据列作的,所以用列分组 # # 分组计算 # print(grouped.sum()) # print (grouped.count()) # print (grouped.size()) # # 当函数作为分组依据时,数据表里的每个索引(可以是行索引,也可以是列索引)都会调用一次函数,函数的返回值作为分组的索引,即相同的返回值分在同一组。 # df = pd.DataFrame(np.random.randint(1, 10, (5, 5)), # columns=['a', 'b', 'c', 'd', 'e'], # index=['Alice', 'Bob', 'Candy', 'Dark', 'Emily']) # df # # 定义函数 # def _dummy_group(idx): #函数的参数就是分组时要计算的分组的名字 # print(idx) #打出索引名 # return idx #返回索引名字 # df.groupby(_dummy_group) # df.groupby(_dummy_group).size() # grouped = df.groupby(_dummy_group) # grouped.sum() # grouped.size() # grouped.count() # # # 重新定义函数 # def _dummy_group(idx): # # print(idx) # return len(idx) # df.groupby(_dummy_group,axis=1) # grouped = df.groupby(len) # grouped.sum() # grouped.size() # grouped.count() # # # 可以直接按照长度len()来分组 # # df.groupby(len).size() # columns = pd.MultiIndex.from_arrays([['China', 'USA', 'China', 'USA', 'China'], # ['A', 'A', 'B', 'C', 'B']], names=['country', 'index']) # # df = pd.DataFrame(np.random.randint(1, 10, (5, 5)), columns=columns) # # print (df) # # # columns的countyy索引分组 # # df.groupby(level='country', axis=1).count() #必须指定axis=1
pandas操作
最新推荐文章于 2023-06-10 22:29:10 发布