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使用新浪微博API发送微博的例子
Apr 10 Python
python通过imaplib模块读取gmail里邮件的方法
May 08 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
May 10 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
浅析Django中关于session的使用
Dec 30 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
Python中bisect的用法及示例详解
Jul 20 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
Django多数据库联用实现方法解析
Nov 12 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
php 正则表达式小结
2009/08/31 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
根据json字符串生成Html的一种方式
2013/01/09 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
jQuery实现文本展开收缩特效
2015/06/03 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
详解javascript函数写法大全
2019/03/25 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
2020/06/04 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
英国大码女性时装零售商:Evans
2018/08/29 全球购物
大学生翘课检讨书范文
2014/10/06 职场文书
2014年体育工作总结
2014/11/24 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
python 制作一个gui界面的翻译工具
2021/05/14 Python
总结高并发下Nginx性能如何优化
2021/11/01 Servers