[英]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.