数据分析--数据的分组和聚合
一、数据分组
1.GroupBy简介
GroupBy技术用于数据分组运算,类似于Excel的分类汇总(对于不同分类进行运算),其运算的核心模式为split-apply-combine,如下图所示,首先,数据及按照key(分组键)的方式分成小的数据片(split);然后对每一个数据片进行操作,如分类求和(apply)最后将结果再组合起来形成新的数据及(combine)
利用GroupBy方法可以轻松地完成分组统计的任务。以消费数据集为例,通过性别分别计算消费平均值,如下图:
返回的group1为GroupBy对象,是保存的中间数据,该对象调用mean()方法即可返回数据。
mena方法完成了分组数据的聚合运算,返回列一个Series数据,更多聚合运算将在后面讲解。当然,也可以通过分组键进行计算,通过day和time,计算小费平均值。
GroupBy对象是可迭代的,其构造为一组二元元祖,如下图:
注:GroupBy由分组名和数据片构成。
size方法可以返回各分组的大小,如下图:
2.列名分组
groupby方法使用的分组键为Series。当然,分组键也支持其他的格式,下面的内容中将一一介绍分组键格式和使用方法。DataFrame数据的列索引名称可以作为分组键,如下图:
用列索引名称可以作为分组键时,用于分组的对象必须是DataFrame数据本身,否则搜索不到索引名会报错,绘制下图,可以看出吸烟对消费数据的影响:
我们可以发现是否吸烟对给小费的影响并不大
上述方法返回的是多列DataFrame的数据,如果只需要获取tip(小费)列数据,通过索引选取即可。但GroupBy对象也可以通过索引获取tip列,然后再进行聚合运算,他其实相当于语法糖,更好用,如下图:
作图查看小费金额与聚餐人数是否有关
可以看出,小费金额基本上与聚餐人数呈正相关,但人数为5时,有下降的趋势
3.按列表或元组分组
分组键也可以是长度适当的列表或元组,长度适当其实就是要与带分组的DataFrame的行数一样,简单地理解,就是把列表或者元组当成DataFarme的一列,然后按其分组
4.按字典分组
如果按照原始的DataFrame中的分组信息很难确定或者不存在 ,可通过字典结构,定义分组的信息,如图:
5.按函数分组
函数作为分组键的原理类似于字典,通过映射关系进行分组,但是函数分组更加灵活,如下图,通过DataFrame最后一列的数值进行正负分组。
对于层次化索引,可通过级别进行分组,通过level参数,输入编号或名称即可,如下图:
当然也可以在列上进行分组(axis=1)如下图:
二、聚合运算
聚合运算就是对分组后的数据进行计算,产生标量值的数据转换过程。本书将讲解常用的聚合函数和自定义聚合函数的用法。
1.聚合函数
前面的例子中使用了部分聚合运算方法,如mean、count、sum函数,如下表所示,为常用的聚合运算方法。
注:空值不参与计算
然后通过性别分组,计算小费的最大值。
其实,除了上述聚合运算方法外,只要是Series或DataFrame支持的能用于分组的运算函数都可以拿来使用。
对于更加复杂的聚合运算,可以自定义聚合函数,通过aggregate或agg参数传入即可。
例如,通过性别分类,计算小费最大值与最小值的差(极差),如下图 :
通过上图,我们可以看出,男性(Male)的小费极差比女性(Female)大很多,说明在小费给予中,男性的差异较大,主观性更大。
2.多函数应用
(1)一行多函数
如下图,对agg参数传入多函数列表,即可完成一列的多函数运算。
如果不想使用默认的运算函数列名 ,可以元组的形式传入,前面为名称,后面为聚合函数,如下图:
(2)多列多函数
对多列进行多聚合函数运算时,会产生层次化索引,如下图:
(3)不同列不同函数
如果需要对不同列使用不同的函数运算,可以通过字典来定义映射关系,如下图:
如果希望返回的结果不以分组键为索引,通过as_index=False可以完成,如下图:
数据分析--数据的分组和聚合相关推荐
- 机器学习之Pandas:Pandas介绍、基本数据操作、DataFrame运算、Pandas画图、文件读取与处、缺失值处理、数据离散化、合并、交叉表和透视表、分组与聚合、案例(超长篇,建议收藏慢慢看)
文章目录 Pandas 学习目标 1Pandas介绍 学习目标 1 Pandas介绍 2 为什么使用Pandas 3 案例: 问题:如何让数据更有意义的显示?处理刚才的股票数据 给股票涨跌幅数据增加行 ...
- 利用python进行数据分析-数据聚合与分组运算2
1.分组级运算和转换 聚合只不过是分组运算的其中一种而已.介绍transform和apply方法,它们能够执行更多其他的分组运算 假设我们想要为一个DataFrame添加一个用于存放各索引分组平均值的 ...
- 如何使用agg函数对数据进行分组聚合
转载自知乎:侦探L 如何使用agg函数对数据进行分组聚合 - 知乎 在上篇文章中,我们详细地介绍了如何使用groupby函数对数据进行分组.而在python的数据分组中,除了groupby函数之外, ...
- 阿拉丁统计 2.0丨筛选?分组?聚合能力?「高级分析」精细化数据统计管理
前两期,我们分享了阿拉丁统计 2.0 的「开源 SDK」和「指标商店」,后台收到了很多粉丝的咨询与试用申请.本期我们就从"事件分析"着手,开启第三个话题--「高级分析」. 在日常工 ...
- 时序数据库如何支持秒级上亿数据的查询分组和聚合运算
https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162499&idx=1& sn=ca43c74ef541b ...
- 聚合多个文件_python数据分析与挖掘(二十五)--- Pandas高级处理分组与聚合
分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况 想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!!看其中 ...
- 【python数据分析】数据的分组,遍历,统计
数据的分组,遍历,统计 俗话说:"人与类聚,物以群分",到这里我们将学习数据的分组以及分组后统计.Pandas的分组相对于Excel会更加简单和灵活. 1️⃣分组 Pandas提供 ...
- Python数据分析pandas之分组统计透视表
Python数据分析pandas之分组统计透视表 数据聚合统计 Padans里的聚合统计即是应用分组的方法对数据框进行聚合统计,常见的有min(最小).max(最大).avg(平均值).sum(求和) ...
- dataframe 众数的方法_pandas 第11篇:DataFrame-数据处理(分组、聚合、窗口、相关、统计)...
数据处理的目的是为了数据分析,下面分享常用的数据分析中会用到的函数. 一,分组和聚合 groupby用于对数据分组,分组之后可以直接调用聚合函数求值:agg()函数把分组和调用聚合函数集成到一个函数来 ...
- Tableau数据分析数据可视化分析平台
Tableau数据分析&数据可视化分析平台 本文章内涉及的资源包以及素材均来自于互联网,仅供大家用来交流学习与研究使用,努力提升自己的一篇文章.各类安装包以及素材版权归属原版权方所有,版权 ...
最新文章
- Educational Codeforces Round 93 (Rated for Div. 2) 题解
- 使用VS2010调用matlab的mat格式文件
- 马化腾很受伤 后果很严重
- plsql轻量版游标的使用2
- SQL Serve 查询所有可用的数据库语句
- 微信公众号开发之微信买单
- Oracle 11g vs 12c 内存、优化器等默认参数对比
- jQuery.callbacks 注释
- Hibernate的持久化对象状态的方法
- 最近 搞定这5篇 java相关
- 全网首发!超全SparseR-CNN实战教程
- JAVA流程图——主要用于循环
- 电脑使用技巧提升篇2:修改电脑桌面固定图标
- ensp vlan 划分
- 小程序 40163_微信小程序请求openid错误码40163
- 肌酸报告:17个肌酸使用常见问题解答
- 2021芒部中学高考成绩查询,2021年镇雄县高考状元名单资料,今年镇雄县高考状元多少分...
- 电脑开机不能进入系统--死机
- [产品经理]产品管理职位的级别
- ESP32学习笔记十九之BLE协议GAPGATT
热门文章
- 计算机辅助药物设计的心得,计算机辅助药物设计实验的探索与心得.doc
- 要做最快的男人,教你用Python写一个打字测试器测试你的打字速度~
- 火狐浏览器打不开html,火狐浏览器打不开网页的原因及解决办法
- 台式计算机蓝牙完成配对,电脑蓝牙已配对但连不上 带你快速解决一下
- 背包问题(Knapsack Problem) ----- 蛮力法
- Unity-动画系统-Animat
- python完全平方数_python判断完全平方数的方法
- 系统win8 任务栏消失不见的解决办法
- 创建自己的腾讯云存储桶,将图片上传到腾讯云,并实现父子之间的数据双向绑定
- python 发音-python读音