在数据聚合与分组中,主要包括:
根据一个或多个键(函数、数组、或dataframe的列名)拆分pandas对象
计算分组后数据的统计值,包括:计数,平均值,标准差,自定义函数
对dataframe的列应用各种各样的函数
实现组内转换或其他运算,规整化,线性回归,排名,选取子集
透视表,交叉表
分组分析
groupby
就是将pandas的数据对象进行,拆分---应用---合并 的数据处理过程
如下面的:
df = pd.DataFrame({'key1':['a','a','b','b','a'], 'key2':['one','two','two','one','one'], 'data1':np.random.randn(5), 'data2':np.random.randn(5)}) df 返回 key1 key2 data1 data2 0 a one 0.127349 1.477832 1 a two -0.430755 0.397269 2 b two -0.911272 0.669960 3 b one 0.370609 0.469459 4 a one 0.968631 0.885551 当我们想要根据key1进行分组,并且计算data1列的平均值 则用到groupby进行拆分 grouped = df['data1'].groupby(df['key1']) grouped.mean() key1 a 0.221742 b -0.270332
在这里,数据根据分组键进行了聚合,产生了新的Series,而且key1是唯一的索引值
当我们一次传入多个数组时: mean = df['data1'].groupby([df['key1'],df['key2']]).mean() mean key1 key2 a one 0.547990 two -0.430755 b one 0.370609 two -0.911272 此时得到的Series具有一个层次化索引 mean.unstack() key2 one two key1 a 0.547990 -0.430755 b 0.370609 -0.911272
分组键可以是任何长度适当的数组,也可以直接是列名(字符串,数字,)
另外,groupby的size用法,能够返回一个含有分组大小的series
对分组进行迭代