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 相关文章推荐
总结网络IO模型与select模型的Python实例讲解
Jun 27 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
简单实现Python爬取网络图片
Apr 01 Python
Python实现随机取一个矩阵数组的某几行
Nov 26 Python
python随机生成库faker库api实例详解
Nov 28 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
Tensorflow之MNIST CNN实现并保存、加载模型
Jun 17 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
Python更改pip镜像源的方法示例
Dec 01 Python
基于PyTorch中view的用法说明
Mar 03 Python
总结三种用 Python 作为小程序后端的方式
May 02 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动态变静态原理
2006/11/25 PHP
php中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
javascript 显示当前系统时间代码
2009/12/28 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
vue.js中mint-ui框架的使用方法
2017/05/12 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
angularjs实现table增加tr的方法
2018/02/27 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
python计算圆周率pi的方法
2015/07/11 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
python两种注释用法的示例
2020/10/09 Python
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
编程输出如下图形
2013/11/24 面试题
新闻学专业应届生求职信
2013/11/08 职场文书
毕业生自荐书模版
2014/01/04 职场文书
元旦文艺汇演主持词
2014/03/26 职场文书
投资建议书模板
2014/05/12 职场文书
2014年仓库工作总结
2014/11/20 职场文书
加入学生会自荐书
2015/03/05 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书