python - 从计数表计算相对频率

标签 python pandas dataframe frequency

我有一个包含多个项目的有效数量的大型数据框,并希望将它们更改为相对频率。所以我添加了一个列来汇总每行列中的所有值:

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/

相关文章:

python - 箱线图 X 值出现多次

python-3.x - 按行特定列表选择 Pandas 数据框列

scala - 如何仅将 "cube"用于 Spark 数据帧上的特定字段?

python - 保留 panda 数据框的重复列值的第一行和最后一行

python - JSON 到 CSV(带前导零)

php - 使用Python进行HTTP请求的连接问题

python - 使用 python3.x 每 5 行检查 csv 的条件

python - 如何加快数据框搜索和赋值?

python - 选择Python类在运行时根据用户输入或命令行参数进行实例化

Python删除内括号并保留外括号