我試圖為數(shù)百列的大型數(shù)據(jù)框架生成摘要統(tǒng)計(jì)數(shù)據(jù),并總結(jié)它們與感興趣的“結(jié)果”的關(guān)系。可使用以下代碼生成簡化的數(shù)據(jù)幀:
df1 = pd.DataFrame({"time1": [0, 1, 1, 0, 0],
"time2": [1, 0, 0, 0, 1],
"time3": [0, 0, 0, 1, 0],
"outcome": [1, 0, 0, 1, 0]})
我想做的是確定每一列在比例和總和方面與結(jié)果特征的關(guān)系。
目前,我一次只做幾個(gè)專欄,如下所示:
df1 = df1.groupby("outcome")[["time1", "time2", "time3"]].agg(["mean", "sum"]).reset_index()
df1[df1["outcome"] == 1].T
這會導(dǎo)致相當(dāng)混亂的數(shù)據(jù)幀,如下所示:
1
outcome 1.0
time1 mean 0.0
sum 0.0
time2 mean 0.5
sum 1.0
time3 mean 0.5
sum 1.0
如何改進(jìn)此輸出以顯示每列的平均值和各列的總和?類似下面顯示的輸出。
mean sum
time1 0 0
time2 0.5 1
time3 0.5 1
理想情況下,我希望對數(shù)據(jù)框架中的數(shù)百列執(zhí)行此操作,并評估它們與結(jié)果的關(guān)系。
那么,有人能給我介紹一個(gè)解決方案嗎?這個(gè)解決方案允許我對數(shù)百列執(zhí)行此操作(不需要單獨(dú)鍵入它們的名稱,這就是解決方案),并生成一個(gè)干凈的數(shù)據(jù)框,如上面的示例輸出所示?非常感謝!
正如@sammywemmy所提到的,我們可以在計(jì)算完這些值之后
unstack
。我們也可以使用loc
而不是reset_index
從索引中選擇outcome==1
:我們也可以先過濾
groupby agg
,然后過濾stack
和droplevel
:或者
set_index
+stack
首先,然后groupby agg
在索引上:或使用
pivot_table
和多個(gè)聚合函數(shù):All produce: