Pandas DataFrame 按行计算百分比与比例的方法

一只小鹿
一只小鹿
发布时间:2026-10-11 | 2人浏览过
原创

本文介绍如何使用 Pandas 库对 DataFrame 进行按行计算百分比(比例)的操作。通过结合 `sum()` 与 `div()` 方法,并正确指定 `axis` 参数,可以快速实现数据在行维度上的归一化处理,适用于不同月份或类别数据的比例分析。

核心逻辑与操作步骤

在处理 DataFrame 数据时,若需计算每一行中各元素占该行总和的比例(即行内百分比),核心思路分为两步:首先计算每行的总和,然后利用该总和作为分母,对原始数据进行除法运算。由于 Pandas 的广播机制(Broadcasting)特性,正确指定计算轴(axis)是实现这一目标的关键。

1. 准备示例数据

假设我们有一个包含多个月份数据的 DataFrame,列名为 a, b, c, d, e。数据如下所示:

>>> df
     a  b  c  d  e
month0  0  1  2  3  4
month1  5  6  7  8  9
month2 10 11 12 13 14
month3 15 16 17 18 19

2. 执行按行比例计算

使用 `df.div()` 方法配合 `df.sum(axis=1)` 可以实现按行求比例。具体参数设置如下:

  • df.sum(axis=1):计算每一行的总和,生成一个以行索引为键的 Series。
  • axis=0:在 `div()` 中指定此参数,确保分母(行总和)沿着列方向广播,即每一行的元素都除以该行的总和。
>>> df.div(df.sum(axis=1), axis=0)
        a     b  c     d     e
month0 0.000000 0.100000 0.2 0.300000 0.400000
month1 0.142857 0.171429 0.2 0.228571 0.257143
month2 0.166667 0.183333 0.2 0.21667 0.233333
month3 0.176471 0.188235 0.2 0.211765 0.223529

3. 结果解读

计算完成后,DataFrame 中的每个值都变成了该行总和的占比。例如,在 `month0` 行中,元素 `b` 的值为 1,该行总和为 10(0+1+2+3+4),因此 `b` 的比例为 0.1(即 10%)。这种方法常用于将二次数据(如各分项数值)投影到行维度,以观察各部分在整体中的相对贡献。

总结

通过 `df.div(df.sum(axis=1), axis=0)` 这一简洁的代码组合,可以高效完成 DataFrame 的按行百分比计算。掌握 `axis` 参数的方向控制,是处理 Pandas 复杂数据变换的基础。

以上就是 Pandas DataFrame 按行求百分比和比例的详细内容,更多关于 Python 数据分析的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表