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 相关文章推荐
pyqt和pyside开发图形化界面
Jan 22 Python
用Python编写简单的微博爬虫
Mar 04 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python简单定义与使用二叉树示例
May 11 Python
python写入并获取剪切板内容的实例
May 31 Python
Python利用递归实现文件的复制方法
Oct 27 Python
python分块读取大数据,避免内存不足的方法
Dec 10 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
详解python中各种文件打开模式
Jan 19 Python
python实现串口通信的示例代码
Feb 10 Python
python 用struct模块解决黏包问题
Nov 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的5个入手程序
2006/11/23 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JavaScript定义类的几种方式总结
2014/01/06 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
python创建和删除目录的方法
2015/04/29 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python opencv摄像头的简单应用
2019/06/06 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Python使用type动态创建类操作示例
2020/02/29 Python
python Canny边缘检测算法的实现
2020/04/24 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
大学生找工作推荐信范文
2013/11/28 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
学校运动会通讯稿
2015/07/18 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
python基础之函数的定义和调用
2021/10/24 Python
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS