首页技术文章正文

Python数据聚合与分组运算:通过函数进行分组

更新时间:2022-10-31 来源:黑马程序员 浏览量:

IT培训班

  与字典或Series对象相比,使用函数作为分组键会更加灵活,任何一个被当做分组键的函数都会在各个索引值上被调用一次,返回的值会被用作分组名称。

  创建一个DataFrame对象,将其行索引的名称设为字符串类型的,具体代码如下。

In [11]: import pandas as pd
         df=pd.DataFrame({'a':[1, 2, 3, 4, 5],
                          'b':[6, 7, 8, 9, 10],
                          'c':[5, 4, 3, 2, 1]},
                          index=['Sun', 'Jack', 'Alice', 'Helen', 'Job']
         df
Out[11]:
       a   b  c
Sun    1   6  5
Jack   2   7  4
Alice  3   8  3
Helen  4   9  2
Job    5  10  1

  如果以行索引名称的长度进行分组,则长度相同的行索引名称会分为一组,即索引名称长度为3的分为一组,长度为4的分为一组,长度为5的分为一组,共分成三组。接下来,以行索引名称的长度作为分组键,将DataFrame对象的数据拆分成三组数据,具体代码如下。

In [12]: groupby_obj=df.groupby(len)         #使用内置函数len进行分组
         for group in groupby_obj:           # 遍历分组对象
             print(group)
Out[12]:
(3,      a   b  c
   Sun   1   6  5
   Job   5  10  1)
(4,      a   b  c
   Jack  2   7  4)
(5,       a   b  c
   Alice  3   8  3
   Helen  4   9  2)

  上述示例中,在调用groupby()方法时传入了内置函数len(),表明len()函数会对行索引一列执行求长度的操作,调用len函数返回的长度值作为分组名称,一旦发现索引名称的长度值一样,就归类为一组。

  从输出结果可以看出,索引名称长度为3的“Sun”和“Job”归为第一组,长度为4的是“Jack”单独为第二组,长度为5的是“Alice”和“Helen”归为第三组。

分享到:
在线咨询 我要报名
和我们在线交谈!