pandas(七) -- 数据分组

数据分组官方文档
分组统计 - groupby功能

  • 根据某些条件将数据拆分成组
  • 对每个组单独使用函数
  • 将结果合并到一个数据结构中

根据单列或多列分组 .groupby()
分组后的对象执行数值计算函数 .sum(),.mean()…
分组后对象同时使用多个函数 --agg()。

df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

参数:

  • by 标签(label)或标签列表
  • axis 默认值为0
  • level MultiIndex时有效
  • as_index 布尔型值 默认是True – 使用grouped的标签作为index.若为False – grouped的标签仍为标签,会新生成0~n-1的index.
  • sort 是否对grouped的标签排序

返回的是GroupBy 对象。通过list(),查看具体内容

df
在这里插入图片描述
经过group方法后,得到的是groupby对象,是一个中间数据,没有进行计算
在这里插入图片描述

a = df.groupby('A').mean()#单列整合
b = df.groupby(['A','B']).mean()#多列整合

在这里插入图片描述
在这里插入图片描述

c = df.groupby(['A'])['D'].mean()  # 以A分组,算D的平均值.返回的是Series对象

在这里插入图片描述

  • 使用list()将groupby对象变成列表对象,可查看具体内容
list(df.groupby('A'))

列表是两个元组对象。每个元组包含‘A’的标签名和相应的DataFrame或Series。

[('bar',      A      B         C        D
  1  bar    one  0.953897  0.26375
  3  bar  three  0.190113  1.01115
  5  bar    two  0.941511 -0.51730), ('foo',      A      B         C         D
  0  foo    one  1.119704 -0.742148
  2  foo    two  0.643483 -1.147405
  4  foo    two -0.952974 -0.434241
  6  foo    one -0.421435  0.933791
  7  foo  three -0.042118  0.641683)]

在这里插入图片描述

  • get_group()
    df.groupby(['A']).get_group('bar')list(df.groupby('A'))[0][1]相同
    在这里插入图片描述
  • .groups:将分组后的groups转为dict
    在这里插入图片描述
  • 分组计算函数方法
grouped = df.groupby(['A'])
print(grouped)
print(grouped.first(),'→ first:非NaN的第一个值\n')
print(grouped.last(),'→ last:非NaN的最后一个值\n')
print(grouped.sum(),'→ sum:非NaN的和\n')
print(grouped.mean(),'→ mean:非NaN的平均值\n')
print(grouped.median(),'→ median:非NaN的算术中位数\n')
print(grouped.count(),'→ count:非NaN的值\n')
print(grouped.min(),'→ min、max:非NaN的最小值、最大值\n')
print(grouped.std(),'→ std,var:非NaN的标准差和方差\n')
print(grouped.prod(),'→ prod:非NaN的积\n')
  • 多函数计算:agg()

函数写法可以用str,或者np.方法
求均值和求和
在这里插入图片描述
可以通过list,dict传入,当用dict时,key名为columns → 更新pandas后会出现警告

 df.groupby('A')['C'].agg({'result1':np.mean,
                               'result2':np.sum})

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值