欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pandas数据分组groupby()和统计函数agg()的使用

程序员文章站 2022-11-05 17:51:45
数据分组 使用 groupby() 方法进行分组 group.size()查看分组后每组的数量 group.groups 查看分组情况 group.get_group('名字') 根据分组后的...

数据分组

  • 使用 groupby() 方法进行分组
  • group.size()查看分组后每组的数量
  • group.groups 查看分组情况
  • group.get_group('名字') 根据分组后的名字选择分组数据

准备数据

上面代码会在当前目录下生成一个 people.csv 文件

pandas数据分组groupby()和统计函数agg()的使用

size()

使用groupby的size方法可以查看分组后每组的数量, 并返回一个含有分组大小的series

可以只对一列数据进行分组, 只保留想要的数据

例如: 通过性别, 只对年龄进行分组

  • 代码df['年龄'].groupby(df['性别'])的逻辑是:取出df中'年龄'列数据,并且对该列数据根据df[‘性别']列数据进行分组操作
  • 这个代码也可写成df.groupby(df['性别'])['年龄'], 他的逻辑是: 将df数据通过df[‘性别']进行分组,然后再取出分组后的'年龄'列数据。两种写法达到的效果是一样的
  • group.groups的结果是一个字典,字典的key是分组后每个组的名字,对应的值是分组后的数据,此方法方便我们产看分组的情况
  • group.get_group('f')这个方法可以根据具体分组的名字获取,每个组的数据

 对分组进行遍历

分组的名称: f 分组的数据 (5, 6)
----------
分组的名称: m 分组的数据 (5, 6)
----------

- 将分组后的对象groups进行遍历,可以获取到group_name每个组的名字,group_df每个组的数据

f组的最大年龄是32,最小年龄是25,平均年龄是26.8
m组的最大年龄是30,最小年龄是26,平均年龄是28.2

按多列进行分组

当需要按照多列进行分组的时候, groupby 方法里面我们传入一个列表, 列表分别存储分组依据的列名

注意: 列表中列名的顺序, 确定了先按xxxx列分组, 然后在按照yyyy列分组, 不同的顺序产生的分组名字是不同的

group.size()返回的结果中发现索引值是多层的, 所以对于多索引值的获取, 只需要从外往里一层一层的取就可以啦, 就像我们睡觉之前,需要先脱外衣再脱掉内衣是一样的

pandas 常用统计函数

  • count() 统计列表中非空手机开的个数
  • nunique() 统计非重复的数据个数
  • sum() 统计列表中所有数值的和
  • mean() 计算列表中数据的平均值
  • median() 统计列表中数据中位数
  • max() 求列表中数据的最大值
  • min() 求列表中数据的最小值

对分组后的数据进行统计 agg()

f组的最大年龄是32.0,最小年龄是25.0,平均年龄是26.8
m组的最大年龄是30.0,最小年龄是26.0,平均年龄是28.2

  • 在使用 agg() 函数时, 我们可以将多个统计函数一起放在一个 agg() 函数中
  • 如果是统计函数是pandas 提供的, 只需要将函数名字以字符串的形式存储到列表中即可
  • 例如: 将 max() 改成 ‘max'

自定义统计函数

当使用自定义的统计函数时
先创建统计函数

注意: 自定义函数名字传入agg() 函数时, 不需要转换成字符串

补充: 在这个数据中, 性别是什么的人总年龄最高

m

开始按照性别分组, 组量太少, 数据也比较少, 本来准备算薪资总数, 但是单位忘记换了, 就这样吧

到此这篇关于pandas数据分组groupby()和统计函数agg()的使用的文章就介绍到这了,更多相关pandas groupby()和agg()内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!