四时宝库

程序员的知识宝库

如何通过函数和索引级别进行分组?4种python方法,附加案例!


前言

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

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

“拆分-应用-合并"分组运算过程,python分组技术groupby应用详解

“拆分-应用-合并"分组运算,python分组技术groupby应用详解2

“拆分-应用-合并"分组运算,python分组技术groupby应用详解3

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

通过函数进行分组

相较于字典或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'],

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关键字传入级别编号或名称即可:

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技术知识介绍相对完整,感兴趣的可以完整查阅一遍,收藏和关注!

标签:pythongroup()函数 

作者:sishi88 , 分类:技术教程 , 浏览:15 , 评论:0

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接