Python-Pandas groupby之后agg的函数最全
- groupby后可以应用agg或apply的函数
- 说明
- 1.shift和diff的应用
- 假如你要根据A分组,计算B列的一阶差分,下面的用法是不对的,会导致分组的索引A列消失
- 正确用法,先将需要分组的列设置为索引,然后
- 上面level=0表示对索引进行分组,这样才会返回带分组列的正确信息
- 2.cummax和cummin的理解,举个例子就懂了
groupby后可以应用agg或apply的函数
| 函数 | 解释 |
|---|---|
| max | 最大值 |
| min | 最小值 |
| mean | 平均值 |
| count | 计数(不包含空值) |
| describe | 统计信息(max,min,mean,count同时显示) |
| size | 行数,即包含空值得count,类似于SQL里面的count(*) |
| last | 最后一行,就是排序后取最后一个,如果是数值排序,就是最小值,注意不包含NA值 |
| first | 第一行,就是排序后取第一个,如果是数值排序,就是最大值,不包含NA值 |
| nth(0)/nth(1)/nth(3) | 取第n大的行(数),如果是数值,就是取第1大/2大/3大的数值,不包含NA值 |
| head(1)/head(2) | 取前n行,如果是数值就是取前1/2大的数,不包含NA值 |
| nlargest | 和head()一样,取前几个最大的数,不包含NA值 |
| sum | 求和 |
| median | 中位数 |
| std | 标准差 |
| var | 方差 |
| prod | 内积,即连乘,所有数连乘 |
| shift | 移位,时间序列中常用,就是把shift(1)整体数据往下移一行,shift(-1)上移一行 |
| diff | 做差,diff(1)做一阶差,diff(2)做2阶差 |
| rank | 排序,可以设置rank(method=first,min,max,mean方法) |
| nunique | 去重后的个数,即返回唯一值的个数 |
| len | 等同于size |
| mad | 平均绝对偏差 |
| cumsum | 累计和 |
| cummax | 到目前为止的最大值 |
| cummin | 到目前为止的最小值 |
| quantile | 分位数 |
| skew | 偏度 |
| kurt | 峰度 |
说明
1.shift和diff的应用
假如你要根据A分组,计算B列的一阶差分,下面的用法是不对的,会导致分组的索引A列消失
1 | df.groupby('A').B.diff(1)或者df.groupby('A').B.shift(1) |
正确用法,先将需要分组的列设置为索引,然后
1 2 | df.set_index('A') df.groupby(level=0).B.diff(1)或者df.groupby(level=0).B.shift(1) |
上面level=0表示对索引进行分组,这样才会返回带分组列的正确信息
2.cummax和cummin的理解,举个例子就懂了
1 2 3 4 5 6 7 8 9 10 11 12 13 | df A B 0 2.0 1.0 1 3.0 NaN 2 1.0 0.0 df.cummax()分组后取累计最大值 A B 0 2.0 1.0 1 3.0 NaN 2 3.0 1.0 cummin为累计最小值, |