Pandas之groupby分组

Posted 康威特冶楼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas之groupby分组相关的知识,希望对你有一定的参考价值。


释义

groupby用来分组,调用groupby 之后返回pandas.core.groupby.generic.DataFrameGroupBy,其实就是由一个个格式为(key, 分组后的dataframe)的元组,组成的列表:

[(key1, dataframe1), (key2, dataframe2), ...]

案例

  • 初始化数据,此时这个班级有2个同名的人都叫Jack
df = pd.DataFrame({\'stu_name\': [\'Tom\', \'Tony\', \'Jack\', \'Jack\'], \'stu_age\': [16, 16, 15, 21]})
print(df)
  stu_name  stu_age
0      Tom       16
1     Tony       16
2     Jack       15
3     Jack       21

  • 根据stu_name 进行分组,根据上面的释义,则可以遍历列表中的每个元组
groups = df.groupby([\'stu_name\'])
for v in groups:
    print(v)
(\'Jack\',   stu_name  stu_age
2     Jack       15
3     Jack       21)
(\'Tom\',   stu_name  stu_age
0      Tom       16)
(\'Tony\',   stu_name  stu_age
1     Tony       16)

显而易见,每个元素v中,v[0]是groupby的列名,v[1]就是该分组下的dataframe

groupby之后的聚合操作

groupby之后更常见的是使用各种聚合函数,如

  • min:最小值
  • max:最大值
  • sum:总和
  • mean:平均值
  • median:中位数
  • count:计数
  • var:方差
  • std:标准差

案例

  • 初始化数据
df = pd.DataFrame({\'stu_name\': [\'Tom\', \'Tony\', \'Jack\', \'Jack\'], \'stu_age\': [16, 16, 15, 21], \'stu_score\': [99, 1, 1, 0]})
  stu_name  stu_age  stu_score
0      Tom       16         99
1     Tony       16          1
2     Jack       15          1
3     Jack       21          0
  • 以名字分组,并对分组后的年龄、成绩求和(例子不具备显示意义,仅做演示)
sum_df = df.groupby([\'stu_name\']).sum()
print(sum_df)
          stu_age  stu_score
stu_name                    
Jack           36          1
Tom            16         99
Tony           16          1

groupby之后直接调用聚合函数,会对所有的列进行聚合操作,但有些时候需要在分组后对多个列进行不同的聚合操作,比如groupby之后,年龄求和,分数求平均值,这时候就需要使用agg函数

groupby之后使用agg函数

  • 沿用上面的原始数据,以名字分组,分组后年龄求和,成绩求平均值
agg_df = df.groupby([\'stu_name\']).agg({\'stu_age\': \'sum\', \'stu_score\': \'mean\'})
print(agg_df)
          stu_age  stu_score
stu_name                    
Jack           36        0.5
Tom            16       99.0
Tony           16        1.0

可以看出如果groupby后要对分组内所有的列都进行一样的操作,那直接调用相关的聚合函数即可,如果是分组后不同的列进行不同的聚合操作,则可以直接采用agg函数。



以上是关于Pandas之groupby分组的主要内容,如果未能解决你的问题,请参考以下文章

pandas聚合和分组运算之groupby

pandas如何对value列数据进行分组groupby?

pandas分组与聚合

pandas相同元素不同顺序合并之移形换位

数据分析—Pandas 中的分组聚合Groupby 高阶操作

python pandas groupby分组后的数据怎么用