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语言技巧之三元运算符使用介绍
Mar 04 Python
python创建进程fork用法
Jun 04 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
对pandas replace函数的使用方法小结
May 18 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
Python实现aes加密解密多种方法解析
May 15 Python
Django用户认证系统如何实现自定义
Nov 12 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
PHP封装的数据库保存session功能类
2016/07/11 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
[03:57]2016完美“圣”典风云人物:rOtk专访
2016/12/09 DOTA
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
python中 * 的用法详解
2019/07/10 Python
python turtle 绘制太极图的实例
2019/12/18 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
Python json格式化打印实现过程解析
2020/07/21 Python
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
环卫处个人工作总结
2015/03/04 职场文书
2015年话务员工作总结
2015/04/29 职场文书
工程合作意向书范本
2015/05/09 职场文书
付款证明模板
2015/06/19 职场文书
Python Django项目和应用的创建详解
2021/11/27 Python