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 相关文章推荐
Windows下安装python2.7及科学计算套装
Mar 05 Python
Python使用爬虫猜密码
Feb 19 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
django session完成状态保持的方法
Nov 27 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python按钮的响应事件详解
Mar 04 Python
Python 实现微信防撤回功能
Apr 29 Python
python3对接mysql数据库实例详解
Apr 30 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
Python有参函数使用代码实例
Jan 06 Python
python 插入日期数据到Oracle实例
Mar 02 Python
python字典进行运算原理及实例分享
Aug 02 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
2014/01/09 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
浅析JavaScript动画模拟拖拽原理
2016/12/09 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
Python构造函数及解构函数介绍
2015/02/26 Python
Python 机器学习库 NumPy入门教程
2018/04/19 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Python多线程同步---文件读写控制方法
2019/02/12 Python
对Python3中列表乘以某一个数的示例详解
2019/07/20 Python
Django重设Admin密码过程解析
2020/02/10 Python
python和php学习哪个更有发展
2020/06/17 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
课例研修方案
2014/05/31 职场文书
民事授权委托书范文
2014/08/02 职场文书
银行委托书范本
2014/09/28 职场文书
总账会计岗位职责
2015/04/02 职场文书
消费者理赔投诉书
2015/07/02 职场文书
保外就医申请书范文
2015/08/06 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
中学生打架《检讨书》范文
2019/08/12 职场文书
python函数的两种嵌套方法使用
2022/04/02 Python