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模拟登录12306的方法
Dec 30 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
python腾讯语音合成实现过程解析
Aug 01 Python
Django ORM 查询管理器源码解析
Aug 05 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Python银行系统实战源码
Oct 25 Python
python生成特定分布数的实例
Dec 05 Python
python集合删除多种方法详解
Feb 10 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
Python如何实现FTP功能
May 28 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 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合并数组+号和array_merge的区别
2015/06/25 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
JavaScript使用slice函数获取数组部分元素的方法
2015/04/06 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
浅谈JavaScript 代码整洁之道
2018/10/23 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
为nuxt项目写一个面包屑cli工具实现自动生成页面与面包屑配置
2019/09/29 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
大学自我鉴定
2013/12/20 职场文书
毕业生自荐书模版
2014/01/04 职场文书
工作决心书范文
2014/03/11 职场文书
停发工资证明范本
2015/06/12 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
聘任书格式及范文
2015/09/21 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
《詹天佑》教学反思
2016/02/20 职场文书
2019银行竞聘书
2019/06/21 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
Python Parser的用法
2021/05/12 Python
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang