Pandas学习笔记 04 分组GroupBy

第四章 分组 总结

1 分组模式及其对象

1.1 分组模式

分组的一般模式:df.groupby(分组依据)[数据来源].使用操作

多维度列分组:groupby中传入相应列名构成的列表

分组依据:列或列的子集、字典或Series、函数、索引级别等

1.2 GroupBy对象

ngroups属性:获取分组个数

groups属性:返回从组名映射到组索引列表的字典

size方法:统计每组元素个数

get_group方法:根据组的具体名称获取对应的行

1.3 分组的三大操作

聚合、变换和过滤,分别对应aggtransformfilter函数,分别返回标量、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函数优点:

  1. 同时使用多个函数

    方法:用列表的形式把内置聚合函数对应的字符串传入

  2. 对特定的列使用特定的聚合函数

    方法:通过构造字典传入,以列名为键

  3. 使用自定义的聚合函数

  4. 直接对结果的列名在聚合前进行自定义命名

    方法:将原函数位置改写为元组,第一个元素为新名称,第二个元素为函数名。

    注意:单个聚合,重命名需要以列表形式传入

3 变换和过滤

3.1 变换函数与transform方法

变换函数的返回值为同长度的序列,最常用的内置变换函数是累计函数:cumcount/cumsum/cumprod/cummax/cummin

groupby对象的transform方法传入自定义函数进行自定义变换,传入值为数据源的序列,返回的结果是行列索引与数据源一致的DataFrame。当返回一个标量时,会触发广播机制广播到整组。

3.2 组索引与过滤

过滤在分组中是对于组的过滤,而索引是对于行的过滤。

组过滤作为行过滤的推广,指的是对一个组的全体所在行进行统计,如果结果返回True则会被保留,False则该组会被过滤,最后把所有未被过滤的组对应的所在行拼接起来作为DataFrame返回。

groupby对象的filter方法可以进行组筛选,其中自定义函数的输入参数为数据源构成的DataFrame本身,只需保证自定义函数的返回为布尔值。

4 跨列分组apply

同时处理多列数据,可以向apply()中传入自定义函数进行处理。

不同函数返回值对应结果:

  1. 标量:结果为 Series ,索引与 agg 的结果一致
  2. Series:结果为DataFrame,行索引与标量情况一致,列索引为Series的索引
  3. DataFrame:结果为DataFrame,行索引最内层在每个组原先agg的结果索引上,再加一层返回的DataFrame行索引,同时分组结果DataFrame的列索引和返回的DataFrame列索引一致。
posted @ 2022-03-07 20:53  ikventure  阅读(128)  评论(0编辑  收藏  举报