我有一个包含多个项目的有效数量的大型数据框,并希望将它们更改为相对频率。所以我添加了一个列来汇总每行列中的所有值:
product apple pear banana sum
Jean 3 5 1 9
Phil 2 7 1 10
Yanis 5 4 4 14
接下来,我必须应用公式 x/sum(X)*100 来获取数据帧中每个值的相对频率,以获得这样的数据帧:product apple pear banana
Jean 33.33 55.55 11.11
Phil 20 70 10
Yanis 37.71 28.57 28.57
我真的不知道如何在不指定每一列的情况下执行此操作(这只是示例的一个小数据集)我现在的代码:
df = pd.read_csv(f, sep="\t", index_col='product')
dff = df.transpose()
dff["sum"] = dff.sum(axis=1)
先感谢您
最佳答案
如果你有这个数据框:
product apple pear banana
0 Jean 3 5 1
1 Phil 2 7 1
2 Yanis 5 4 4
你可以做:df.iloc[:, 1:] = df.iloc[:, 1:].div(df.sum(axis=1), axis=0) * 100
print(df)
打印: product apple pear banana
0 Jean 33.333333 55.555556 11.111111
1 Phil 20.000000 70.000000 10.000000
2 Yanis 38.461538 30.769231 30.769231
关于python - 从计数表计算相对频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67795923/