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自动发邮件脚本
Mar 31 Python
python实现八大排序算法(2)
Sep 14 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
Django web框架使用url path name详解
Apr 29 Python
python批量修改ssh密码的实现
Aug 08 Python
基于python操作ES实例详解
Nov 16 Python
Python之Class&Object用法详解
Dec 25 Python
tf.concat中axis的含义与使用详解
Feb 07 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 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
一棵php的类树(支持无限分类)
2006/10/09 PHP
php创建多级目录的方法
2015/03/24 PHP
thinkPHP查询方式小结
2016/01/09 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
Python检测QQ在线状态的方法
2015/05/09 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
python反编译学习之字节码详解
2019/05/19 Python
Django的性能优化实现解析
2019/07/30 Python
使用tensorboard可视化loss和acc的实例
2020/01/21 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
春秋航空官方网站:Spring Airlines
2017/09/27 全球购物
ColourPop美国官网:卡拉泡泡,洛杉矶彩妆品牌
2019/04/28 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
自我鉴定思想方面
2013/10/07 职场文书
代理班主任的自我评价
2014/02/04 职场文书
环境科学专业求职信
2014/08/04 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
CSS 新特性 contain控制页面的重绘与重排问题
2021/04/30 HTML / CSS