Pandas学习笔记 04 分组GroupBy
第四章 分组 总结
1 分组模式及其对象
1.1 分组模式
分组的一般模式:df.groupby(分组依据)[数据来源].使用操作
多维度列分组:groupby中传入相应列名构成的列表
分组依据:列或列的子集、字典或Series、函数、索引级别等
1.2 GroupBy对象
ngroups属性:获取分组个数
groups属性:返回从组名映射到组索引列表的字典
size方法:统计每组元素个数
get_group方法:根据组的具体名称获取对应的行
1.3 分组的三大操作
聚合、变换和过滤,分别对应agg、transform和filter函数,分别返回标量、Series类型和DataFrame类型结果。
2 聚合函数
2.1 内置聚合函数
groupby对象内置聚合函数包括max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod等,均返回标量值。
2.2 agg方法
agg函数优点:
-
同时使用多个函数
方法:用列表的形式把内置聚合函数对应的字符串传入
-
对特定的列使用特定的聚合函数
方法:通过构造字典传入,以列名为键
-
使用自定义的聚合函数
-
直接对结果的列名在聚合前进行自定义命名
方法:将原函数位置改写为元组,第一个元素为新名称,第二个元素为函数名。
注意:单个聚合,重命名需要以列表形式传入
3 变换和过滤
3.1 变换函数与transform方法
变换函数的返回值为同长度的序列,最常用的内置变换函数是累计函数:cumcount/cumsum/cumprod/cummax/cummin
groupby对象的transform方法传入自定义函数进行自定义变换,传入值为数据源的序列,返回的结果是行列索引与数据源一致的DataFrame。当返回一个标量时,会触发广播机制广播到整组。
3.2 组索引与过滤
过滤在分组中是对于组的过滤,而索引是对于行的过滤。
组过滤作为行过滤的推广,指的是对一个组的全体所在行进行统计,如果结果返回True则会被保留,False则该组会被过滤,最后把所有未被过滤的组对应的所在行拼接起来作为DataFrame返回。
groupby对象的filter方法可以进行组筛选,其中自定义函数的输入参数为数据源构成的DataFrame本身,只需保证自定义函数的返回为布尔值。
4 跨列分组apply
同时处理多列数据,可以向apply()中传入自定义函数进行处理。
不同函数返回值对应结果:
- 标量:结果为
Series,索引与agg的结果一致 Series:结果为DataFrame,行索引与标量情况一致,列索引为Series的索引DataFrame:结果为DataFrame,行索引最内层在每个组原先agg的结果索引上,再加一层返回的DataFrame行索引,同时分组结果DataFrame的列索引和返回的DataFrame列索引一致。

浙公网安备 33010602011771号