[英]How to calculate the percentage of each value in a column follow each category in python pandas dataframe
我有一個 dataframe 並試圖獲得 output ,它顯示了不同類別中每個值的百分比。 誰能幫助我怎么做?
原始數據表:
接口_Bin | 產品 |
---|---|
1 | 日常活動 |
1 | 日常活動 |
22 | 日常活動 |
97 | 日常活動 |
1 | JSL |
1 | JSL |
97 | JSL |
97 | JSL |
22 | JSL |
預期結果:
產品 | Bin(97)_count | Total_interfacebin_count | bin_97_percentage_vs 總計數 |
---|---|---|---|
日常活動 | 1 | 4 | 25% |
JSL | 2 | 5 | 40% |
非常感謝。
首先對數據進行排序,以便得到一個字典(或列表),例如: {"ADL":121,"JSL":218} 可能帶有類似的代碼
for element in table row:
if dict.contains(element.key) //in this case ADL or JSL
dict[element.key].value+=element.value
else
dict[element.key]=element.value
然后 go 通過並求和所有字典值以獲得總和,或者將它們加到上述代碼中的字典中,最終得到每個百分比為 (dict[key].value/sum)*100 + "%"
df = pd.crosstab(df['Product'], df['Interface_Bin'])
f1 = lambda x: f'Bin({x})_count'
f2 = lambda x: f'Bin({x})_percentage_vs total count'
s = df.sum(axis=1).rename('Total_interfacebin_count')
df2 = df.div(s, axis=0).rename(columns=f2).mul(100)
df = pd.concat([df.rename(columns=f1), s, df2], axis=1).sort_index(axis=1)
print (df)
Bin(1)_count Bin(1)_percentage_vs total count Bin(22)_count \
Product
ADL 2 50.0 1
JSL 2 40.0 1
Bin(22)_percentage_vs total count Bin(97)_count \
Product
ADL 25.0 1
JSL 20.0 2
Bin(97)_percentage_vs total count Total_interfacebin_count
Product
ADL 25.0 4
JSL 40.0 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.