分组

一、分组模式及其对象

1.一般模式

分组操作三要素:分组依据 、 数据来源 、 操作及其返回结果 。
一般模式:
df.groupby(分组依据)[数据来源].使用操作

2.分组依据的本质

根据多个维度进行分组,只需在 groupby 中传入相应列名构成的列表即可。传入列名只是一种简便的记号,事实上等价于传入的是一个或多个列,最后分组的依据来自于数据来源组合的unique值,通过 drop_duplicates 就能知道具体的组类别。

3.Groupby对象

最终具体做分组操作时,所调用的方法都来自于 pandas 中的 groupby 对象。

其属性有:

(1)通过 ngroups 属性,可以得到分组个数
(2)通过 groups 属性,可以返回从 组名 映射到 组索引列表 的字典。

其方法有:

(1) size 在 groupby 对象上表示统计每个组的元素个数
(2) get_group 方法可以直接获取所在组对应的行,此时必须知道组的具体名字

4.分组的三大操作

聚合、变换和过滤:
相应的 agg 、 transform 和 filter 函数及其操作。

二、聚合函数

1.内置聚合函数

一些直接定义在groupby对象的聚合函数:
max/min/mean/median/count/all/any/idxmax/idxmin/mad/nunique/skew/quantile/sum/std/var/sem/size/prod
注:这些聚合函数当传入的数据来源包含多个列时,将按照列进行迭代计算。

2.agg方法

【a】使用多个函数
【b】对特定的列使用特定的聚合函数
【c】使用自定义函数
需要注意传入函数的参数是之前数据源中的列,逐列进行计算。
【d】聚合结果重命名
将上述函数的位置改写成元组,元组的第一个元素为新的名字,第二个位置为原来的函数,包括聚合字符串和自定义函数。
注:对一个或者多个列使用单个聚合的时候,重命名需要加方括号,否则就不知道是新的名字还是手误输错的内置函数字符串

三、变换和过滤

1.变换函数与transform方法

最常用的内置变换函数是累计函数: cumcount/cumsum/cumprod/cummax/cummin,完成的是组内累计操作。

当用自定义变换时需要使用 transform 方法,被调用的自定义函数, 其传入值为数据源的序列 ,与 agg 的传入类型是一致的,其最后的返回结果是行列索引与数据源一致的 DataFrame 。(但事实上还可以返回一个标量,这会使得结果被广播到其所在的整个组,这种 标量广播 的技巧在特征工程中很常见)

2.组索引与过滤

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

在 groupby 对象中,定义了 filter 方法进行组的筛选,其中自定义函数的输入参数为数据源构成的 DataFrame 本身。因此所有表方法和属性都可以在自定义函数中相应地使用,同时只需保证自定义函数的返回为布尔值即可。

四、跨列分组

在设计上, apply 的自定义函数传入参数与 filter 完全一致,只不过后者只允许返回布尔值。 apply 方法可以返回标量,一维 Series 和二维 DataFrame 。
【a】标量情况:结果得到的是 Series ,索引与 agg 的结果一致
【b】 Series 情况:得到的是 DataFrame ,行索引与标量情况一致,列索引为 Series 的索引
【c】 DataFrame 情况:得到的是 DataFrame ,行索引最内层在每个组原先 agg 的结果索引上,再加一层返回的 DataFrame 行索引,同时分组结果 DataFrame 的列索引和返回的 DataFrame 列索引一致。
注:
(1)除非需要使用跨列处理的分组处理,否则应当使用其他专门设计的 groupby 对象方法。
(2)在使用聚合函数和变换函数时,也应当优先使用内置函数,一般而言在速度上都会快于用自定义函数来实现。

参考文献:《Joyfulpandas》——Datawhale

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值