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中的__new__特殊方法
Jun 02 Python
python访问抓取网页常用命令总结
Apr 11 Python
浅谈机器学习需要的了解的十大算法
Dec 15 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
python保存文件方法小结
Jul 27 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
pycharm显示远程图片的实现
Nov 04 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
Nov 11 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
python怎么调用自己的函数
Jul 01 Python
python实现三阶魔方还原的示例代码
Apr 28 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通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
Javascript变量作用域详解
2013/12/06 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
python实现识别相似图片小结
2016/02/22 Python
python常用知识梳理(必看篇)
2017/03/23 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Django框架模板的使用方法示例
2019/05/25 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
如何用python 操作zookeeper
2020/12/28 Python
T3官网:头发造型工具
2019/12/26 全球购物
房地产出纳岗位职责
2013/12/01 职场文书
工程专业毕业生自荐信范文
2013/12/25 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
论文诚信承诺书
2014/05/23 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
债务追讨律师函
2015/06/24 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
用Python可视化新冠疫情数据
2022/01/18 Python
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android
SQL Server使用T-SQL语句批处理
2022/05/20 SQL Server
vue实现在data里引入相对路径
2022/06/05 Vue.js