Python数据分析中Groupby用法之通过字典或Series进行分组的实例


Posted in Python onDecember 08, 2017

在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组

people=DataFrame(
  np.random.randn(5,5),
  columns=['a','b','c','d','e'],
  index=['Joe','Steve','Wes','Jim','Travis']
)
mapping={'a':'red','b':'red','c':'blue','d':'blue','e':'red','f':'orange'}
by_column=people.groupby(mapping,axis=1)#列方向上进行分组

这里不知道python底层是怎么运行的,最好把运行的结果打印出来看一下

for i in by_column:
  print (i)

遍历的结果:

('blue',  c     d
Joe   0.218189 -0.228336
Steve  1.677264 0.630303
Wes   0.315320 -0.250787
Jim   3.343462 0.483021
Travis 0.854553 -0.760884)
('red',   a     b     e
Joe   0.218164 0.823654 -1.425720
Steve  1.191175 -0.327735 1.926470
Wes  -1.418855 0.497466 0.110105
Jim  -1.157157 0.817122 0.749023
Travis -0.440583 -0.907922 1.374294)

从结果可以看到,把a b e分给了red, c d分给了blue

a b e--->red

c d --->blue

接下来再来执行 people.groupby(mapping,axis=1).mean()

blue    red
Joe   0.241336 -0.182099
Steve  0.459773 -0.448336
Wes   0.205278 0.605721
Jim  -0.094838 1.254174
Travis 0.354140 0.142075

从结果看到在列方向group分组 执行聚合函数mean()后列索引就只有 blue和red了。

整个过程可以这么理解 在列方向上进行分组 a b e为一组为red,c d 为一组为blue。最后以red blue作为新DataFraem的列索引

同样Series也有同样的功能,它可以被看作一个固定大小的映射。对于上面的那个例子,如果用series作为分组键,则pandas会检查Series以确保其索引分组轴是对齐的:

ser=Series(mapping)
a red
b red
c blue
d blue
e red
f orange

by_ser_group=people.groupby(ser,axis=1).mean()

blue red
Joe 0.241336 -0.182099
Steve 0.459773 -0.448336
Wes 0.205278 0.605721
Jim -0.094838 1.254174
Travis 0.354140 0.142075

从结果可以看到,通过字典进行分组和通过Series进行分组结果是相同的。也就是说他们执行的原理是相同的,都是把索引(对series来说)或字典的key与Dataframe的索引进行匹配,

字典中value或series中values值相同的会被分到一个组中,最后根据每组进行在聚合。

groupby的用法很多,之后有时间我会慢慢更新博客。如果有那些地方有错欢迎大家指出,一块学习,共同进步。

以上这篇Python数据分析中Groupby用法之通过字典或Series进行分组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python读写Excel文件的实例
Nov 01 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
简析Python的闭包和装饰器
Feb 26 Python
用Python实现将一张图片分成9宫格的示例
Jul 05 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 10 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 #Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 #Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 #Python
python的unittest测试类代码实例
Dec 07 #Python
Python numpy 常用函数总结
Dec 07 #Python
分享6个隐藏的python功能
Dec 07 #Python
Python中pygal绘制雷达图代码分享
Dec 07 #Python
You might like
IIS环境下快速安装、配置和调试PHP5.2.0
2006/12/17 PHP
yii的CURD操作实例详解
2014/12/04 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
Javascript Math对象
2009/08/13 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
大家都说好用的Python命令行库click的使用
2019/11/07 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python实现ftp文件传输功能
2020/03/20 Python
Python如何重新加载模块
2020/07/29 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
海飞丝的广告词
2014/03/20 职场文书
小露珠教学反思
2014/04/30 职场文书
电子信息工程自荐信
2014/05/26 职场文书
红头文件任命书范本
2014/06/05 职场文书
物流管理专业推荐信
2014/09/06 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书