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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
Python不规范的日期字符串处理类
Jun 10 Python
Python正则表达式分组概念与用法详解
Jun 24 Python
Python排序算法实例代码
Aug 10 Python
Python给图像添加噪声具体操作
Mar 03 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python安装cx_Oracle和wxPython的方法
Sep 14 Python
python regex库实例用法总结
Jan 03 Python
使用Python开发冰球小游戏
Apr 30 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python的SQLAlchemy框架使用入门
2015/04/29 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python删除n行后的其他行方法
2019/01/28 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
python和go语言的区别是什么
2020/07/20 Python
Python无损压缩图片的示例代码
2020/08/06 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
深圳茁壮笔试题
2015/05/28 面试题
白酒业务员岗位职责
2013/12/27 职场文书
低碳环保演讲稿
2014/08/28 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
乱世佳人观后感
2015/06/08 职场文书
学校标语口号大全
2015/12/26 职场文书
Nginx快速入门教程
2021/03/31 Servers
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
vue实现移动端div拖动效果
2022/03/03 Vue.js