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中使用中文的方法
Feb 19 Python
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
python分析apache访问日志脚本分享
Feb 26 Python
Python处理中文标点符号大集合
May 14 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
Python3几个常见问题的处理方法
Feb 26 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
python如何求100以内的素数
May 27 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python3 re返回形式总结
Nov 20 Python
sklearn中的交叉验证的实现(Cross-Validation)
Feb 22 Python
Pygame Event事件模块的详细示例
Nov 17 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获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
php 404错误页面实现代码
2009/06/22 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
文字幻灯片
2006/06/26 Javascript
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
前端微信支付js代码
2016/07/25 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
详解Django 中是否使用时区的区别
2018/06/14 Python
python虚拟环境完美部署教程
2019/08/06 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python如何执行系统命令
2020/09/23 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
装潢设计实习自我鉴定
2013/09/19 职场文书
计算机应用职专应届生求职信
2013/11/12 职场文书
应聘文员自荐信范文
2014/03/11 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python