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程序设计入门(2)变量类型简介
Jun 16 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
解决Mac下首次安装pycharm无project interpreter的问题
Oct 29 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
Python使用type动态创建类操作示例
Feb 29 Python
Python loguru日志库之高效输出控制台日志和日志记录
Mar 07 Python
pandas的resample重采样的使用
Apr 24 Python
python如何操作mysql
Aug 17 Python
Python编写单元测试代码实例
Sep 10 Python
python实现感知机模型的示例
Sep 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
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
百度地图API使用方法详解
2015/08/25 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
2017/08/08 jQuery
JavaScript实现短信倒计时60s
2017/10/09 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
解决vue项目使用font-awesome,build后路径的问题
2018/09/01 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
深入讲解Python编程中的字符串
2015/10/14 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python正则简单实例分析
2017/03/21 Python
python实现kNN算法识别手写体数字的示例代码
2019/08/16 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
python3正则模块re的使用方法详解
2020/02/11 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
关于Java finally的面试题
2016/04/27 面试题
入党申请自荐书范文
2014/02/11 职场文书
合作意向书
2014/07/30 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技