约定第一行代码
import pandas as pd
聚合运算
在数据分析中,对数据聚合(求和、平均值等)通常是不可避免的。在将数据分组(groupby)后,新手若不知函数 agg() 的情况下,很有可能写出二三十行的for循环只为求每个分组的平均值。在这里,介绍个强大的函数:agg() ,能让你的代码缩减到一行
创建对象和分组
df1=pd.DataFrame({'sex':list('FFMFMMF'),
'smoker':list('YNYYNYY'),
'age':[21,30,17,37,40,18,26],
'weight':[120,100,132,140,94,89,123]})
df1
代码结果
sex | smoker | age | weight | |
---|---|---|---|---|
0 | F | Y | 21 | 120 |
1 | F | N | 30 | 100 |
2 | M | Y | 17 | 132 |
3 | F | Y | 37 | 140 |
4 | M | N | 40 | 94 |
5 | M | Y | 18 | 89 |
6 | F | Y | 26 | 123 |
1 求单列下聚合
grouped=df1.groupby(['sex','smoker'])
# sex有 F M 二值,smoker有 Y N 二值,故分成四组
grouped['age'].agg('mean')
#代码结果
sex smoker
F N 30.0
Y 28.0
M N 40.0
Y 17.5
Name: age, dtype: float64
2 求多列下的聚合
grouped.agg('mean')
代码结果
3 求多种聚合运算
grouped['age'].agg(['min','max'])
代码结果
4 求多种聚合运算的同时更改列名
grouped['age'].agg([('A','mean'),('B','max')])
代码结果
5 不同的列运用不同的聚合函数
grouped.agg({'age':['sum','mean'],'weight':['min','max']})
代码结果
6 使用自定义的聚合函数
def Max_cut_Min(group):
return group.max()-group.min()
grouped.agg(Max_cut_Min)
代码结果
7 方便的descibe
grouped.describe()
代码结果