# coding: utf-8 # # 分组 # ## 对数据集合进行分类,然后方便对每一组的数据进行统计分析 # ## 分组运算过程:split(切割)——apply(应用)——combine(合并) # ## 切割:根据什么数据进行分组 # ## 应用:每一个分组后的数据怎么处理,怎么计算,指的是数据的处理过程 # ## 合并:将每一个分组计算后的结果合并起来,统一展示 import numpy as np import pandas as pd dict_obj = { 'key1':['a','b','a','b','a','b','a','b'], 'key2':['one','two','three','one','three','three','two','one'], 'data1':[5,6,5,2,3,3,2,4], 'data2':[3,4,5,6,3,5,2,5] } df = pd.DataFrame(dict_obj) print df group1 = df.groupby('key1').mean() print group1 group =df.groupby('key1').sum() print group # 对某一列进行分组 # 对data1这一列,按照key1分组,求每一列的总和 print df['data1'].groupby(df['key1']).sum() group =df.groupby('key1') # size()函数:用来查看分组中数据的个数 print group.size() print df # 根据自定义key进行分组 self_key = [1,1,1,2,2,3,3,3] print df.groupby(self_key).size() self_key = [1,1,1,2,2,3,3,3] print df.groupby(self_key).sum() print df # 按多个键进行分组 res = df.groupby(['key1','key2']) print res.size() # DataFrameGroupBy对象和SeriesGroupBy对象支持迭代操作 print group for group_name,group_data in group: print group_name print group_data print '=========' print res.size() for group_name,gruop_data in res: print group_name print group_data # groupby对象转化为list对象 print list(group) # groupby对象转化为dict对象 #先转化为一个list对象,再转化一个dict对象 print dict(list(group)) # 按数据类型分组 print df print '=========' print df.dtypes print '---------' print df.groupby(df.dtypes,axis=1).size() # 按列进行分组, 默认是按行进行分组 # 按照字典类型分组 my_dict = { 'a':'python', 'b':'html', 'c':'java', 'd':'css', 'e':'python' } df = pd.DataFrame(np.random.randint(1,10,(5,5)), columns=['a','b','c','d','e'],index=['A','B','C','D','E']) print df print df.groupby(my_dict,axis=1).size() print df.groupby(my_dict,axis=1).sum() # 按索引级别分组 columns = pd.MultiIndex.from_arrays( [ ['python','java','python','java','python'], ['A','B','A','C','A'] ], names=['language','index'] ) df = pd.DataFrame(np.random.randint(1,10,(5,5)),columns=columns) print df #根据language分组 df.groupby(level='index',axis=1).size() print df.groupby(level='index',axis=1).sum() print df.groupby(level='language',axis=1).sum()
Pandas分组
最新推荐文章于 2024-05-25 02:14:18 发布