python库学习笔记——分组计算利器:pandas中的groupby技术

来源:互联网 发布:网络电话机哪个牌子好 编辑:程序博客网 时间:2024/06/07 06:47

        最近处理数据需要分组计算,又用到了groupby函数,温故而知新。

  分组运算的第一阶段,pandas 对象(无论是 Series、DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被拆分(split)为多组。拆分操作是在对象的特定轴上执行的。例如,DataFrame 可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用到各个分组并产生一个新值。最后,所有这些函数的执行结果会被合并到最终的结果对象中。结果对象的形式一般取决于数据上所执行的操作。


举例说明,生成随机DataFrame数据

输入

df = DataFrame({'key1':['a','a','b','b','a'],                'key2':['one','two','one','two','one'],                'data1':np.random.randn(5),                'data2':np.random.randn(5)})
输出df


假设我们想要按 key1 进行分组,并计算 data1 列的平均值。

输入

df['data1'].groupby(df['key1']).mean() or df.groupby('key1')['data1'].mean()
输出

key1a    0.310092b   -0.785952Name: data1, dtype: float64


假设我们想要按 key1 ,key2进行分组,并计算 data1 列的平均值。

输入

df['data1'].groupby([df['key1'],df['key2']]).mean() or df.groupby(['key1','key2'])[['data1']].mean()
输出

key1  key2a     one    -0.078753      two     1.087782b     one    -1.346429      two    -0.225475Name: data1, dtype: float64

另外,我们可以对分组进行迭代,以多重键为例:

输入

for name,group in df.groupby('key1'):    print (name)    print (group)
输出

a      data1     data2 key1 key20  0.033971  0.066088    a  one1  1.087782 -0.095748    a  two4 -0.191477 -0.057805    a  oneb      data1     data2 key1 key22 -1.346429  0.648059    b  one3 -0.225475  1.440988    b  two



参考资料:《利用python进行数据分析》







原创粉丝点击