[Pandas][基础]分组

SAC过程

  1. 内涵
    SAC指的是分组操作中的split-apply-combine过程
    其中split指基于某一些规则,将数据拆成若干组,apply是指对每一组独立地使用函数,combine指将每一组的结果组合成某一类数据结构
  2. apply过程
    在该过程中,我们实际往往会遇到四类问题:
    整合(Aggregation)——即分组计算统计量(如求均值、求每组元素个数)
    变换(Transformation)——即分组对每个单元的数据进行操作(如元素标准化)
    过滤(Filtration)——即按照某些规则筛选出一些组(如选出组内某一指标小于50的组)
    综合问题——即前面提及的三种问题的混合

groupby函数

基本内容

可根据列分组(一列或者多列)
-组的遍历时
for name,group in grouped_single: print(name) display(group.head())
第一个参数就是name,第二个参数为group的DataFrame 如果只有一个参数就是group的DataFrame

  • level参数
    df.set_index(['Gender','School']).groupby(level=1,axis=0).get_group('S_1')
    level 指的是多层索引,最外面的是level 0

groupby对象的特点

  • 分组对象的head和first
    对分组对象使用head函数,返回的是每个组的前几行,而不是数据集前几行
    first显示的是以分组为索引的每组的第一个分组信息
  • 对于groupby函数而言,分组的依据是非常自由的,只要是与数据框长度相同的列表即可,同时支持函数型分组
  • groupby的[]操作
    可以用[]选出groupby对象的某个或者某几个列

聚合、过滤和变换

聚合(Aggregation)

所谓聚合就是把一堆数,变成一个标量,因此mean/sum/size/count/std/var/sem/describe/first/last/nth/min/max都是聚合函数

  • 同时使用多个聚合函数
    group_m.agg(['sum','mean','std'])
  • 指定作用于哪些列
    grouped_mul.agg({'Math':['mean','max'],'Height':'var'})
  • 利用NamedAgg函数进行多个聚合
    注意:不支持lambda函数,但是可以使用外置的def函数

过滤(Filteration)

filter函数是用来筛选某些组的(务必记住结果是组的全体),因此传入的值应当是布尔标量

变换(Transformation)

transform函数中传入的对象是组内的列,并且返回值需要与列长完全一致

apply函数

可能在所有的分组函数中,apply是应用最为广泛的,这得益于它的灵活性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值