zl程序教程

您现在的位置是:首页 >  后端

当前栏目

[Pandas] groupby分组聚合操作

pandas 操作 分组 聚合 GroupBy
2023-09-11 14:22:54 时间

数据源

import pandas as pd
 
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ], 
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

df

实例1: 计算每个team的Q1季度平均值

单列分组聚合

res1 = df.groupby("team")["Q1"].mean()

res1

实例2: 计算每个team的Q1季度和Q3季度平均值

多列分组聚合

res2 = df.groupby("team")[["Q1","Q3"]].mean()

res2

实例3: 计算每个team的Q2季度平均值和Q2季度最大值

使用agg函数来计算多个聚合值

res3 = df.groupby("team")["Q2"].agg(["mean", "max"])

res3

我们也可以对聚合的结果进行命名

res3 = df.groupby('team')['Q2'].agg([('avg_Q2','mean'), ('max_Q2','max')])

扩展补充: 根据字段'team'进行分组,字段'Q1'求和,字段'Q2'求平均 

import numpy as np
'''
       Q1    Q2
team           
A      57  60.0
C     129  66.5
D      65  49.0
E      89  21.0
'''
df.groupby('team').agg({"Q1":np.sum, "Q2":np.mean})

实例4: 计算每个team的Q2季度和Q4季度的平均值和最大值

res4 = df.groupby("team")[["Q2","Q4"]].agg(["mean", "max"])

res4 

实例5: 计算每个team的Q1季度平均值与Q2季度平均值之差

res5 = df.groupby('team').apply(lambda x:x['Q1'].mean() - x['Q2'].mean())

res5