Python数据分析中Groupby用法之通过字典或Series…
2018-06-17 23:47:17来源:未知 阅读 ()
在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组
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的用法很多,之后有时间我会慢慢更新博客。如果有那些地方有错欢迎大家指出,一块学习,共同进步。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:websocket介绍
下一篇:006菜单练习(标记位)
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash