Python数据分析中Groupby用法之通过字典或Series进行分组的实例

 更新时间:2017年12月08日 09:35:22   作者:nyist  
下面小编就为大家分享一篇Python数据分析中Groupby用法之通过字典或Series进行分组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组

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 BeautifulSoup库抓取58手机维修信息

    使用python BeautifulSoup库抓取58手机维修信息

    这篇文章主要介绍了一个使用python抓取58手机的精准商家信息,使用BeautifulSoup API的方法
    2013-11-11
  • python与caffe改变通道顺序的方法

    python与caffe改变通道顺序的方法

    今天小编就为大家分享一篇python与caffe改变通道顺序的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 深入理解Python中的*重复运算符

    深入理解Python中的*重复运算符

    这篇文章主要介绍了深入理解Python中的*重复运算符,小编觉得还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Django框架验证码用法实例分析

    Django框架验证码用法实例分析

    这篇文章主要介绍了Django框架验证码用法,结合实例形式分析了Python Django框架验证码的功能、实现方法及相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • pycharm恢复默认设置或者是替换pycharm的解释器实例

    pycharm恢复默认设置或者是替换pycharm的解释器实例

    今天小编就为大家分享一篇pycharm恢复默认设置或者是替换pycharm的解释器实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python中执行JavaScript实现数据抓取的多种方法

    Python中执行JavaScript实现数据抓取的多种方法

    JavaScript是一门强大的脚本语言,广泛应用于网页前端开发、构建交互式用户界面以及处理各种客户端端任务,有时可能需要在Python环境中执行JavaScript代码,本文将介绍多种方法,帮助你在Python中执行 JavaScript代码,并提供详尽的示例代码,使你能够轻松掌握这一技能
    2023-11-11
  • Python键值互换的实现示例

    Python键值互换的实现示例

    Python键值互换是一种对Python字典类型中键值对进行反转的技术,有时候,我们需要以值作为键,以键作为值来操作字典,这时候就需要用到键值互换的技术,本文主要介绍了Python键值互换的实现示例,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Django渲染Markdown文章目录的方法示例

    Django渲染Markdown文章目录的方法示例

    这篇文章主要介绍了Django渲染Markdown文章目录的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Python3.x对JSON的一些操作示例

    Python3.x对JSON的一些操作示例

    最近在学习python3,正巧遇到了一些json的操作,索性整理一下分享出来,下面这篇文章主要给大家介绍了关于Python3.x对JSON的一些操作,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-09-09
  • OpenCV imread读取图片失败的问题及解决

    OpenCV imread读取图片失败的问题及解决

    这篇文章主要介绍了OpenCV imread读取图片失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论