首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中计算列中某个值的贡献百分比

在python中计算列中某个值的贡献百分比
EN

Stack Overflow用户
提问于 2018-06-21 04:43:01
回答 1查看 320关注 0票数 0

我有下面的数据框

代码语言:javascript
复制
 item1  item2    item3    
  x      y         z    
  x1     y1        z1   
  x      y2        z2   
  x      y         z1
  x2     y         z         
  x2     y1        z2     

我想要找出一列中每个值对该列中所有值的贡献百分比( x,x1,x2在item1中的贡献与item2和item3相同)

下面必须是结果数据框。

代码语言:javascript
复制
item1  %con_item1  item2  %con_item2  item3 %con_item3
x          50       y        50         z       33.33
x1         16.66    y1       33.33      z1      33.33
x2         33.33    y2       16.66      z2      33.33      
EN

回答 1

Stack Overflow用户

发布于 2018-06-21 05:01:55

normalize参数设置为True的情况下使用value_counts

代码语言:javascript
复制
pd.concat([df[i].value_counts(normalize=True).reset_index() for i in df.columns], axis=1)

输出:

代码语言:javascript
复制
  index     item1 index     item2 index     item3
0     x  0.500000     y  0.500000    z1  0.333333
1    x2  0.333333    y1  0.333333    z2  0.333333
2    x1  0.166667    y2  0.166667     z  0.333333

更新了缩放和列命名的答案:

代码语言:javascript
复制
pd.concat([df[i].value_counts(normalize=True)
                .mul(100.0)
                .rename_axis(i)
                .reset_index(name='%con_'+i)  for i in df.columns], axis=1)

输出:

代码语言:javascript
复制
  item1  %con_item1 item2  %con_item2 item3  %con_item3
0     x   50.000000     y   50.000000    z1   33.333333
1    x2   33.333333    y1   33.333333    z2   33.333333
2    x1   16.666667    y2   16.666667     z   33.333333
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50956739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档