[Pandas] groupby分组聚合操作

数据源

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值