簡體   English   中英

了解 pandas groupby().agg() 值

[英]Understanding pandas groupby().agg() values

我發現了一些用於測試辛普森悖論的代碼,但我對它的工作原理感到困惑。

數據格式如下:

在此處輸入圖像描述

當我跑步時

gb = df_.groupby(["kidney_stone_size", "treatment"]).agg([np.sum, lambda x: len(x)])
gb

我明白了

在此處輸入圖像描述

我無法完全理解df_.groupby(["kidney_stone_size", "treatment"]).agg([np.sum, lambda x: len(x)])的作用。

一方面,聚合數據似乎是從groupby部分中省略的列計算出來的,就像我做的那樣

gb = df_.groupby(["recovery", "treatment"]).agg([np.sum, lambda x: len(x)])

我明白了

在此處輸入圖像描述

那么這是默認行為 - 為丟失的列計算聚合數據嗎?

我知道您可以在字典中明確指定列,但我試圖按原樣理解代碼。

.agg([np.sum, lambda x: len(x)])究竟計算了什么?

np.sum到底應用於什么,同樣是lambda x: len(x)

請理解,在我的理解中可能存在一些概念上的空白,這可能會使從外部顯而易見的事情對我來說並不明顯。 非常感謝任何幫助。

那么這是默認行為 - 為丟失的列計算聚合數據嗎?

我認為是的,如果在groupby pandas 之后未指定要處理的列,則使用groupby中未使用的所有列並應用聚合函數。

the.agg([np.sum, lambda x: len(x)]) 到底在計算什么

這里sum對於像join一樣工作的非數字列,對於 numeric get sum ,您的自定義 function lambda x: len(x)返回組的長度 - 數字和非數字。

df_ = pd.DataFrame({
        'kidney_stone_size':list('aaaaaa'),
         'recovery':[4,5,4,5,5,4],
         'col1':[1,3,5,7,1,0],
         'col2':['new'] * 6,
         'treatment':list('aaabbb')
})

df = df_.groupby(["kidney_stone_size", "treatment"]).agg([np.sum, lambda x: len(x)])
print (df)
                            recovery            col1                  col2  \
                                 sum <lambda_0>  sum <lambda_0>        sum   
kidney_stone_size treatment                                                  
a                 a               13          3    9          3  newnewnew   
                  b               14          3    8          3  newnewnew   

                                        
                            <lambda_0>  
kidney_stone_size treatment             
a                 a                  3  
                  b                  3  

但是,如果僅使用聚合 function 使用sum類的數字,pandas 默認省略非數字列:

df = df_.groupby(["kidney_stone_size", "treatment"]).sum()
print (df)
                             recovery  col1
kidney_stone_size treatment                
a                 a                13     9
                  b                14     8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM