我有以下数据框
item1 item2 item3
x y z
x1 y1 z1
x y2 z2
x y z1
x2 y z
x2 y1 z2
我想找到列中每个值对列中所有值的百分比贡献(item1中x,x1,x2与item2和item3相同的贡献)
以下必须是结果数据框。
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
答案 0 :(得分:1)
在value_counts
参数设置为True的情况下使用normalize
:
pd.concat([df[i].value_counts(normalize=True).reset_index() for i in df.columns], axis=1)
输出:
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
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)
输出:
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