首页 > 其他 > 详细

Pandas (五) 数据分组

时间:2019-10-18 13:08:44      阅读:61      评论:0      收藏:0      [点我收藏+]

我们经常需要对某些标签或索引的局部进行累计分析, 这时就需要用到 groupby 了.

实际上,我们可以把 groupby 理解成一个分割(split),应用(apply),组合(combine)的过程.

 

一个经典分割-应用-组合操作如下图所示,其中应用的是一个求和函数.

  • 分割: 将 DataFrame按照指定的键分割成若干组
  • 应用: 对每个组应用函数, 通常是累计,转换或过滤函数
  • 组合: 将每一组的结果合并成一个输出组

 

在数据处理中, 我们经常需要把某些特征的共同值进行累计分析.

例如有一列特征, 储存的是用户学历数据, 分为, 初中, 高中, 大学

我们经常做的一件事情是, 将初中的, 高中, 大学的都各自分为一组, 然后统计每一组中的不同统计量的值.

df.groupby(学历) # by 以----进行分组

需要注意的是,这里的返回值不是一个 DataFrame 对象,而是一个 DataFrameGroupBy 对象。

你可以将它看成是一种特殊形式的 DataFrame,里面隐藏着若干组数据,但是在没有应用累计函数之前并不会真的计算。

我们在应用累计函数之后, 就会完成真正的计算。

df.groupby(学历).count()

df.groupby(学历).sum()

df.groupby(学历).mean()

……

1.筛选列

可以直接在groupby对象中选择列:

df.groupby(学历)[产品评分].mean()

也可以统计后在选择列:

df.groupby(学历).mean()[产品评分]

2.可以通过遍历的方法, 将DataFrameGroupBy中的数据打印出来

for group_name,group_data in df.groupby(学历):
    print(group_name)
    print("-------")
    print(group_data)
    print(---------分割线----------)

特殊需求:

  1. 假如对于一列,我想要同时应用多个统计函数呢?
  2. 假如对于不同的列,我想要用不同的统计函数呢?
  3. 应用自定义函数进行统计
test  = df.groupby(学历)
test.agg([max,min,mean]) # 列表,同时统计多个统计值
test.agg({"测试成绩":[mean,std,var], "产品评分":[max,min,mean]})

也可以应用自定义的统计函数进行统计。

 

 

 

 

Pandas (五) 数据分组

原文:https://www.cnblogs.com/BC10/p/11697733.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!