Pandas中的宝藏函数-agg()
data = pd.DataFrame(
{"company":['百度', '阿里', '百度', '阿里', '百度', '腾讯', '腾讯', '阿里', '腾讯', '阿里'],
'level': ['P7', 'P7', 'P8', 'P5', 'P8', 'P7', 'P8', 'P7', 'P5', 'P6'],
"salary":[43000, 24000, 40000, 39000, 8000, 47000, 25000, 16000, 21000, 38000],
"age":[25, 34, 49, 42, 28, 23, 45, 21, 34, 29]})
1、聚合Series
只计算工资列的最小值
data['salary'].agg('min')
8000
求工资列列的最小值、最大值以及中位数
data['salary'].agg(['min','max','median'])
min 8000.0
max 47000.0
median 31500.0
Name: salary, dtype: float64
2、聚合数据框
data.agg({'level': ['max','min'], 'salary': ['mean','std']})
level salary
max P8 NaN
min P5 NaN
mean NaN 30100.000000
std NaN 13016.655997
NaN
的情况。3、聚合groupby()结果
data.groupby(['company','level']).agg({'salary':['min','max','median']})
salary
min max median
company level
百度 P7 43000 43000 43000
P8 8000 40000 24000
腾讯 P5 21000 21000 21000
P7 47000 47000 47000
P8 25000 25000 25000
阿里 P5 39000 39000 39000
P6 38000 38000 38000
P7 16000 24000 20000
data.groupby(['company','level']).agg({'salary':['min','max','median']}).reset_index(drop=False)
company level salary
min max median
0 百度 P7 43000 43000 43000
1 百度 P8 8000 40000 24000
2 腾讯 P5 21000 21000 21000
3 腾讯 P7 47000 47000 47000
4 腾讯 P8 25000 25000 25000
5 阿里 P5 39000 39000 39000
6 阿里 P6 38000 38000 38000
7 阿里 P7 16000 24000 20000
data.groupby(['company','level']).agg(
min_salary = pd.NamedAgg(column='salary', aggfunc='min'),
max_salary = pd.NamedAgg(column='salary', aggfunc='max'),
median = pd.NamedAgg(column='salary', aggfunc='median')).reset_index(drop=False)
company level min_salary max_salary median
0 百度 P7 43000 43000 43000
1 百度 P8 8000 40000 24000
2 腾讯 P5 21000 21000 21000
3 腾讯 P7 47000 47000 47000
4 腾讯 P8 25000 25000 25000
5 阿里 P5 39000 39000 39000
6 阿里 P6 38000 38000 38000
7 阿里 P7 16000 24000 20000
评论