首頁技術(shù)文章正文

Python數(shù)據(jù)聚合與分組運(yùn)算:通過函數(shù)進(jìn)行分組

更新時(shí)間:2022-10-31 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  與字典或Series對(duì)象相比,使用函數(shù)作為分組鍵會(huì)更加靈活,任何一個(gè)被當(dāng)做分組鍵的函數(shù)都會(huì)在各個(gè)索引值上被調(diào)用一次,返回的值會(huì)被用作分組名稱。

  創(chuàng)建一個(gè)DataFrame對(duì)象,將其行索引的名稱設(shè)為字符串類型的,具體代碼如下。

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

  如果以行索引名稱的長(zhǎng)度進(jìn)行分組,則長(zhǎng)度相同的行索引名稱會(huì)分為一組,即索引名稱長(zhǎng)度為3的分為一組,長(zhǎng)度為4的分為一組,長(zhǎng)度為5的分為一組,共分成三組。接下來,以行索引名稱的長(zhǎng)度作為分組鍵,將DataFrame對(duì)象的數(shù)據(jù)拆分成三組數(shù)據(jù),具體代碼如下。

In [12]: groupby_obj=df.groupby(len)         #使用內(nèi)置函數(shù)len進(jìn)行分組
         for group in groupby_obj:           # 遍歷分組對(duì)象
             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)

  上述示例中,在調(diào)用groupby()方法時(shí)傳入了內(nèi)置函數(shù)len(),表明len()函數(shù)會(huì)對(duì)行索引一列執(zhí)行求長(zhǎng)度的操作,調(diào)用len函數(shù)返回的長(zhǎng)度值作為分組名稱,一旦發(fā)現(xiàn)索引名稱的長(zhǎng)度值一樣,就歸類為一組。

  從輸出結(jié)果可以看出,索引名稱長(zhǎng)度為3的“Sun”和“Job”歸為第一組,長(zhǎng)度為4的是“Jack”單獨(dú)為第二組,長(zhǎng)度為5的是“Alice”和“Helen”歸為第三組。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!