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用GET方法上传文件
Mar 10 Python
python编程羊车门问题代码示例
Oct 25 Python
python 定时修改数据库的示例代码
Apr 08 Python
python指定写入文件时的编码格式方法
Jun 07 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
python之生产者消费者模型实现详解
Jul 27 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python os库常用操作代码汇总
Nov 03 Python
Python类class参数self原理解析
Nov 19 Python
python help函数实例用法
Dec 06 Python
Python实现区域填充的示例代码
Feb 03 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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
Protoss兵种对照表
2020/03/14 星际争霸
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
关于js注册事件的常用方法
2013/04/03 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
2016/08/24 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
JavaScript函数表达式详解及实例
2017/05/05 Javascript
详解vuex的简单使用
2018/03/12 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python调用C语言程序方法解析
2020/07/07 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
《自选商场》教学反思
2014/02/14 职场文书
大学生作弊检讨书
2014/02/19 职场文书
父母对孩子的寄语
2014/04/09 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
python 实现图片特效处理
2022/04/03 Python