第四章分组
学习时间:
12月22日-12月24日
学习内容:
一、分组模式及其对象
1. 分组的一般模式
想要实现分组操作,必须明确三个要素:
- 分组依据 、
- 数据来源 、
- 操作及其返回结果 。
df.groupby(分组依据)[数据来源].使用操作
按照性别统计身高中位数,就可以如下写出
2. 分组依据的本质
根据多个维度进行分组,只需在 groupby 中传入相应列名构成的列表即可
根据学生体重是否超过总体均值来分组,同样还是计算身高的均值
其实最后产生的结果就是按照条件列表中元素的值(此处是 True 和 False )来分组
如果传入多个序列进入 groupby ,那么最后分组的依据就是这两个序列对应行的唯一组合
3. Groupby对象
具体做分组操作时,所调用的方法都来自于 pandas 中的 groupby 对象
- 通过 ngroups 属性,可以得到分组个数
- 通过 groups 属性,可以返回从 组名 映射到 组索引列表 的字典
- size 作为 groupby 对象属性,表示统计每个组的元素个数
- 通过 get_group 方法可以直接获取所在组对应的行,此时必须知道组的具体名字
4. 分组的三大操作
分组的三大操作:聚合、变换和过滤
二、聚合函数
1. 内置聚合函数
直接定义在groupby对象的聚合函数
max/min/
mean/median/
count/
all/
any/
idxmax/idxmin/
mad/
nunique/
skew/
quantile/
sum/
std/
var/
sem/
size/
prod
缺点如下:
- 无法同时使用多个函数
- 无法对特定的列使用特定的聚合函数
- 无法使用自定义的聚合函数
- 无法直接对结果的列名在聚合前进行自定义命名
2. agg方法
通过 agg 函数解决这四类问题
【a】使用多个函数
用列表的形式把内置聚合函数对应的字符串传入
【b】对特定的列使用特定的聚合函数
可以通过构造字典传入 agg 中实现,其中字典以列名为键,以聚合字符串或字符串列表为值。
【c】使用自定义函数
注意:
意传入函数的参数是之前数据源中的列,逐列进行计算
【d】聚合结果重命名
将上述函数的位置改写成元组,元组的第一个元素为新的名字,第二个位置为原来的函数
三、变换和过滤
1. 变换函数与transform方法
变换函数的返回值为同长度的序列,最常用的内置变换函数是累计函数:
cumcount
cumsum
cumprod
cummax
cummin