DataFrame.groupby()所见的各种用法详解


Posted in Python onJune 14, 2020

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 pd

df = 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()

输出示例:

DataFrame.groupby()所见的各种用法详解

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

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

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

输出:

DataFrame.groupby()所见的各种用法详解

所见 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格式

输出:

DataFrame.groupby()所见的各种用法详解

解决办法: 加一句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()

输出:

DataFrame.groupby()所见的各种用法详解

所见 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()所见的各种用法详解

到此这篇关于 DataFrame.groupby() 所见的各种用法详解的文章就介绍到这了,更多相关 DataFrame.groupby()用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 时间处理datetime实例
Sep 06 Python
Python笔记(叁)继续学习
Oct 24 Python
编程语言Python的发展史
Sep 26 Python
Windows系统下安装Python的SSH模块教程
Feb 05 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
对python多线程SSH登录并发脚本详解
Feb 14 Python
详细分析Python垃圾回收机制
Jul 01 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
python3访问字典里的值实例方法
Nov 18 Python
C站最全Python标准库总结,你想要的都在这里
Jul 03 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 #Python
Pandas把dataframe或series转换成list的方法
Jun 14 #Python
详解pandas获取Dataframe元素值的几种方法
Jun 14 #Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 #Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 #Python
pandas创建DataFrame的7种方法小结
Jun 14 #Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 #Python
You might like
Smarty中调用FCKeditor的方法
2014/10/27 PHP
初识laravel5
2015/03/02 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
2019/05/01 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
python多进程间通信代码实例
2019/09/30 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
什么是Linux虚拟文件系统VFS
2015/08/25 面试题
乡镇安全生产目标责任书
2014/07/23 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
2015年司法所工作总结
2015/04/27 职场文书
上课迟到检讨书
2015/05/06 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
导游词之无锡古运河
2019/11/14 职场文书
如何解决springcloud feign 首次调用100%失败的问题
2021/06/23 Java/Android
Python实现抖音热搜定时爬取功能
2022/03/16 Python