簡體   English   中英

如何計算列中每個值的百分比遵循 python pandas dataframe 中的每個類別

[英]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 + "%"

crosstabconcat一起使用:

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.

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