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号
浙公网安备 33010602011771号