[英]Count the frequency of unique values in every pandas column using groupby
如何使用 groupby 獲取每個數據框列中的所有唯一值及其頻率?
我已經嘗試過 stats.mode ,它提供了我想用其他列值的頻率擴展的最常見值的信息。
from scipy import stats
source = pd.DataFrame({'col1' : ['A', 'A', 'A','A'],
'col2' : ['a', 'a', 'a', 'b'],
'col3' : ['c','c','d','d']})
source.groupby(['col1'])[['col2', 'col3']].agg(stats.mode)
結果:
col1
col2 col3
A ([a], [3]) ([c], [2])
我想得到:
col1
col2 col3
A ([a, b], [3,1]) ([c,d], [2,2])
您需要一個自定義函數:
def cust_mode(s):
counts = s.value_counts()
return list(counts.index), list(counts)
out = source.groupby(['col1'])[['col2', 'col3']].agg(cust_mode)
輸出:
col2 col3
col1
A ([a, b], [3, 1]) ([c, d], [2, 2])
for k in df.columns:
print(df[k].value_counts())
給你你想要的。 如果要包含 nan,則在value_counts
的括號之間dropna=False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.