目录

所见 1 :日常用法

所见 2 :解决groupby.sum() 后层级索引levels上移的问题

所见 3 :解决groupby.apply() 后层级索引levels上移的问题

所见 4 :groupby函数的分组结果保存成DataFrame


groupby的函数定义:

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

  • by :接收映射、函数、标签或标签列表;用于确定聚合的组。
  • axis : 接收 0/1;用于表示沿行(0)或列(1)分割。
  • level : 接收int、级别名称或序列,默认为None;如果轴是一个多索引(层次化),则按一个或多个特定级别分组。
  • as_index:接收布尔值,默认Ture;Ture则返回以组标签为索引的对象,False则不以组标签为索引。

其他的参数解释就看文档吧:链接:pandas.DataFrame.groupby 介绍文档

所见 1 :日常用法

import pandas as pddf = pd.DataFrame({'Gender' : ['男', '女', '男', '男', '男', '男', '女', '女', '女'],'name' : ['周杰伦', '蔡依林', '林俊杰', '周杰伦', '林俊杰', '周杰伦', '田馥甄', '蔡依林', '田馥甄'],'income' : [4.5, 2.9, 3.8, 3.7, 4.0, 4.1, 1.9, 4.1, 3.2],'expenditure' : [1.5, 1.9, 2.8, 1.7, 4.1, 2.5, 1.1, 3.4, 1.2]})
#根据其中一列分组
df_expenditure_mean = df.groupby(['Gender']).mean()#根据其中两列分组
df_expenditure_mean = df.groupby(['Gender', 'name']).mean()#只对其中一列求均值
df_expenditure_mean = df.groupby(['Gender', 'name'])['income'].mean()

输出示例:

所见 2 :解决groupby.sum() 后层级索引levels上移的问题

上图中的输出二,虽然是 DataFrame 的格式,但是若需要与其他表匹配的时候,这个格式就有些麻烦了。匹配数据时,我们需要的数据格式是:列名都在第一行,数据行中也不能有 Gender 列这样的合并单元格。因此,我们需要做一些调整,将 as_index 改为 False ,默认是 Ture 。

#不以组标签为索引,通过 as_index 来实现
df_expenditure_mean = df.groupby(['Gender', 'name'], as_index=False).mean()

输出:

所见 3 :解决groupby.apply() 后层级索引levels上移的问题

在所见 2 中我们知道,使用参数 as_index 就可使 groupby 的结果不以组标签为索引,但是后来在使用 groupby.apply() 时发现,as_index 参数失去了效果。如下例所示:

# 使用了 as_index=False,但是从输出结果中可见没起到作用
df_apply = df.groupby(['Gender', 'name'], as_index=False).apply(lambda x: sum(x['income']-x['expenditure'])/sum(x['income']))
df_apply = pd.DataFrame(df_apply,columns=['存钱占比'])#转化成dataframe格式

输出:

解决办法: 加一句df_apply_index = df_apply.reset_index()

# 加一句df_apply_index = df_apply.reset_index()
df_apply = df.groupby(['Gender', 'name'], as_index=False).apply(lambda x: sum(x['income']-x['expenditure'])/sum(x['income']))
df_apply = pd.DataFrame(df_apply,columns=['存钱占比'])#转化成dataframe格式
df_apply_index = df_apply.reset_index()

输出:

所见 4 :groupby函数的分组结果保存成DataFrame

所见 1 中的输出三,明显是  Series ,我们需要将其转化为 DataFrame 格式的数据。

#只对其中一列求均值,并转化为 DataFrame
df_expenditure_mean = df.groupby(['Gender', 'name'], as_index=False)['income'].mean()
df_expenditure_mean = pd.DataFrame(df_expenditure_mean)#转化成dataframe格式
df_expenditure_mean.rename(columns={'income':'收入均值'}, inplace = True)

输出:

下班啦,明天继续!

分组统计 - DataFrame.groupby() 所见的各种用法 - Python代码相关推荐

  1. python三国演义人物出场统计ppt_Python学习之四大名著人物出场次数Python代码-Go语言中文社区...

    <三国演义>,<水浒传>,<西游记>的人物出场次数Python代码: 经过代码运行的结果可以看出三国作者对曹操和孔明比较喜爱:水浒作者对宋江和武松比较喜爱:西游作者 ...

  2. python分组统计数据_数据分组统计

    统计分析数据的时候,经常需要进行分组统计.分组操作在python里的实现方式就是groupby语句. 惯例,咱们先造一个DataFrame表. import pandas as pd dic={ 'c ...

  3. pandas使用groupby函数对dataframe进行分组统计、使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index)

    pandas使用groupby函数对dataframe进行分组统计.使用as_index参数设置分组聚合的结果中分组变量不是dataframe的索引(index) 目录

  4. python dataframe group by_Python DataFrame.groupby()聚合函数,分组级运算

    pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的方式对数据集进行切片.切块.摘要等操作.根据一个或多个键(可以是函数.数组或DataFrame列名)拆分pandas对象.计算分 ...

  5. pandas相关函数sort_values、字符串处理、index、merge、数据合并cancat、groupby分组统计

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.排序函数sort_values() 二.字符串处理 1.介绍 2.代码介绍 3.Categorical类型降低数据 ...

  6. Pandas数据分析—groupby分组统计

    13.Pandas中groupby分组统计 文章目录 13.Pandas中groupby分组统计 前言 一.分组使用聚合函数做数据统计 1.准备数据 二.遍历groupby的结果理解执行流程 三.实例 ...

  7. pandas分组统计 - groupby功能

    数据分组 分组统计 - groupby功能 ① 根据某些条件将数据拆分成组 ② 对每个组独立应用函数 ③ 将结果合并到一个数据结构中 Dataframe在行(axis=0)或列(axis=1)上进行分 ...

  8. python 数据分组后看每组多少个_【Python】分组统计GroupBy技术详解

    摘要 进行数据分析时,GroupBy分组统计是非常常用的操作,也是十分重要的操作之一.基本上大部分的数据分析都会用到该操作,本文将对Python的GroupBy分组统计操作进行讲解. 1.GroupB ...

  9. groupby函数分组统计

    groupby函数分组统计(这里写自定义目录标题) 分组统计后的类别的计数以及某类的总和 data.groupby(['User Id'])['Integral'].count() data.grou ...

最新文章

  1. Grails里DOMAIN类的一对一,一对多,多对多关系总结及集成测试
  2. Cacti/Nagios监控系统应用场景
  3. php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...
  4. kafka多分区只有一个在消费_kafka多个消费者只有一个消费
  5. Linux中top命令的用法详解
  6. java集合sort底层实现_Java面试总结系列之Collections.sort()
  7. 操作系统使用户和计算机的接口 对吗,计算机操作系统教程--核心与设计原理习题10答案...
  8. 两则爵士鼓的基础练习
  9. leetcode 高薪_LeetCode 第 125 号问题:验证回文串
  10. 有关计算机科学导论的说法,计算机科学导论__练习题_汇总.docx
  11. webservice studio 参数是DataSet时不支持中文 解决方法
  12. linux jzmq编译,Linux下ps aux解释
  13. SpringBoot学习(一)初识SpringBoot、第一个SpringBoot程序
  14. 需求调研报告模板_精准摸底,把握需求:名师工作室开展培训活动调研报告
  15. 深度剖析微信小程序搜索的排名机制
  16. layui 富文本编辑器和textarea值的相互传递
  17. Java十年 十大组织
  18. Zookeeper 序列化
  19. 英语不好能学编程吗?
  20. 微型计算机内存的基本单元的长度是,2017年计算机应用基础统考试题库

热门文章

  1. 原来你是这样的Promise
  2. html总结:文本框填满表格
  3. day 34 守护线程守护进程 互斥锁线程 信号量 生产者消费者
  4. 【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量
  5. ABP框架详解(八)动态ApiController的生成和访问机制
  6. wndows程序设计之书籍知识与代码摘录-封装一个类似printf的messagebox
  7. 使用data()方法缓存数据
  8. 编写Web前端代码的注意事项
  9. mysql - 内存表使用总结
  10. 深入MTK平台bootloader启动分析笔记