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 GAE、Django导出Excel的方法
Nov 24 Python
python正则表达式match和search用法实例
Mar 26 Python
Python守护进程用法实例分析
Jun 04 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
Python IDE Pycharm中的快捷键列表用法
Aug 08 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 Python
一文搞懂Python Sklearn库使用
Aug 23 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
模拟xcopy的函数
2006/10/09 PHP
谈谈PHP语法(3)
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
php7基于递归实现删除空文件夹的方法示例
2017/06/15 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
用javascript做拖动布局的思路
2008/05/31 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
jquery+ajax实现异步上传文件显示进度条
2020/08/17 jQuery
Vue实现购物车基本功能
2020/11/08 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
2019/12/19 Python
python退出循环的方法
2020/06/18 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
《两只鸟蛋》教学反思
2014/02/10 职场文书
平安工地汇报材料
2014/08/19 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
学校教代会开幕词
2016/03/04 职场文书