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网络编程 Python套接字编程
Sep 13 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Tensorflow 合并通道及加载子模型的方法
Jul 26 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
python 搜索大文件的实例代码
Jul 08 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
django的模型类管理器——数据库操作的封装详解
Apr 01 Python
python的链表基础知识点
Sep 13 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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
javascript下有关dom以及xml节点访问兼容问题
2007/11/26 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python实现机器学习之元线性回归
2018/09/06 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python字典改变value值方法总结
2019/06/21 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
Html5页面点击遮罩层背景关闭遮罩层
2020/11/30 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
法制演讲稿
2014/09/10 职场文书
电工实训报告总结
2014/11/05 职场文书
员工家属慰问信
2015/03/24 职场文书
自荐信模板大全
2015/03/27 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
初中化学教学反思
2016/02/22 职场文书
HTML基本元素标签介绍
2022/02/28 HTML / CSS