(python 分组聚合)(python聚类分组)

(python技术教程)(python技术教程)

(python 分组聚合)(python聚类分组)

前言

groupby分组技术是python常用方法之一,具体的分组方法主要包括:对分组进行迭代、选取一个或一组列、通过字典或Series 进行分组、通过函数进行分组以及根据索引级别分组等。

在过往对中,我们对分组进行迭代、选择去一个或一组列以及通过字典或Series 进行分组进行列分享,具体文章如下:

接下来,小编对通过函数进行分组和根据索引级别分组进行详细介绍,具体如下:

(python 分组聚合)(python聚类分组)

通过函数进行分组

相较于字典或Seires,Python函数在定义分组映射关系时可以更有创意且更为抽象。任何被当做分组键的函数都会在各个索引值上被调用一次,其返回值就会被用作分组名称。

举例:根据人名的长度进行分组,虽然可以求取一个字符串长度数组,但其实仅仅传入len函数就可以了:

1.函数分组

In [1]: import numpy as np

In [2]: import pandas as pd

In [3]: from pandas import Series,DataFrame

In [4]: people=DataFrame(np.random.randn(5,5),columns=['a','b','c','d','e'],

(python flopy)(python flopy)

index=['Joe','Steve','Wes','Jim','Travis'])

In [5]: people.groupby(len).sum()

Out[5]:

a b c d e

3 -3.152645 2.243932 0.919162 2.548441 1.566587

5 -0.064130 -2.322453 1.561030 -2.503621 2.023593

6 -0.215965 -0.934142 0.994929 1.406651 0.015119

2.混合使用

将函数跟数组、列表、字典、Series混合使用也不是问题,因为任何东西最终都会转换为数组:

In [6]: key_list=['one','one','one','two','two']

In [7]: people.groupby([len,key_list]).min()

Out[7]:

a b c d e

3 one -2.354664 0.150884 0.921764 0.258471 -0.272082

two -0.468694 0.408352 -1.083457 0.488402 1.314167

5 one -0.064130 -2.322453 1.561030 -2.503621 2.023593

6 two -0.215965 -0.934142 0.994929 1.406651 0.015119

根据索引级别分组

1.层次化索引数据集

层次化索引数据集最方便的地方就在于它能够根据索引级别进行聚合。要实现该目的,通过level关键字传入级别编号或名称即可:

(python 分组聚合)(python聚类分组)

2.level关键字

In [12]: hier_df.groupby(level='cty',axis=1).count()

Out[12]:

cty JP US

0 2 3

1 2 3

2 2 3

3 2 3

总结

上述内容详细介绍列通过函数进行分组和根据索引级别分组的技术。到目前位置,关于groupby技术知识介绍相对完整,感兴趣的可以完整查阅一遍,收藏和关注!

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(python 分组聚合)(python聚类分组)
本文链接:https://www.51qsb.cn/article/6682.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2022-09-19
下一篇2022-09-19

你可能还想知道

发表回复

登录后才能评论