繁体   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