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 相关文章推荐
Python3指定路径寻找符合匹配模式文件
May 22 Python
Python中tell()方法的使用详解
May 24 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
使用python脚本实现查询火车票工具
Jul 19 Python
python机器人运动范围问题的解答
Apr 29 Python
Python3 Tkinter选择路径功能的实现方法
Jun 14 Python
pygame实现弹球游戏
Apr 14 Python
Python smtp邮件发送模块用法教程
Jun 15 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
Python Unittest原理及基本使用方法
Nov 06 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 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封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
Python对象体系深入分析
2014/10/28 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
简单了解django缓存方式及配置
2019/07/19 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
领班岗位职责范文
2014/02/06 职场文书
剪彩仪式主持词
2014/03/19 职场文书
酒鬼酒广告词
2014/03/21 职场文书
升学宴演讲稿
2014/09/01 职场文书
公务员政审材料范文
2014/12/23 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
详解Django中 render() 函数的使用方法
2021/04/22 Python
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL