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 相关文章推荐
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
机器学习python实战之手写数字识别
Nov 01 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
Python 中Django安装和使用教程详解
Jul 03 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
pyCharm 实现关闭代码检查
Jun 09 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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实现字符串翻转的方法
2015/03/27 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
Bootstrap学习笔记之css样式设计(2)
2016/06/07 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
python通过zabbix api获取主机
2018/09/17 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
汽车机修工岗位职责
2014/03/06 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
会计求职简历自我评价
2015/03/10 职场文书
高二语文教学反思
2016/02/16 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang