计算 Pandas 的百分比变化

Fariba Laiq 2024年2月15日
  1. 使用 pct_change() 计算 Pandas 的百分比变化
  2. 在计算 Pandas 的百分比变化之前填充缺失值
  3. 计算 Pandas 中 Multi-Index DataFrame 的百分比变化
计算 Pandas 的百分比变化

pct_change() 是 Pandas 中的一个函数,默认情况下计算前一行元素之间的百分比变化。在时间序列数据的情况下,这个函数被频繁使用。

此函数的输出是一个 DataFrame,其中包含上一行的百分比变化值。当我们调用这个函数时,我们可以指定其他行作为参数进行比较。

它适用于以下公式。

$$ Pct \space Change = {(Current-Previous) \over Previous}*100 $$

使用 pct_change() 计算 Pandas 的百分比变化

此方法接受四个可选参数,如下所示。

  1. periods - 具有默认值 1。它指定要移动的期间以计算百分比变化。
  2. fill_method - 指定在计算百分比变化之前如何处理 NA。
  3. limit - 指定在停止之前要填充的连续 NA 的数量。
  4. freq - 从时间序列 API 中使用的增量(例如 'M'BDay())。

以下是计算两行之间百分比变化的简单代码。我们将使用 DataFrame 对象调用 pct_change() 方法,而不传递任何参数。

# Python 3.x
import pandas as pd

df = pd.DataFrame([[2, 4, 6], [1, 2, 3], [5, 7, 9]])
print(df.pct_change())

输出:

计算百分比变化

在计算 Pandas 的百分比变化之前填充缺失值

例如,我们在 DataFrame 中有 missingNone 值。在计算百分比变化时,缺失的数据将由上一行中的相应值填充。

这里,ffill 表示前向填充。

# Python 3.x
import pandas as pd

df = pd.DataFrame([[2, 4, 6], [1, None, 3], [None, 7, 9]])
print(df.pct_change(fill_method="ffill"))

填充缺失值

计算 Pandas 中 Multi-Index DataFrame 的百分比变化

我们还可以计算多索引 DataFrame 的百分比变化。我们可以使用 groupby() 方法根据某些标准将数据分成组,然后应用 pct_change()

# Python 3.x
df = pd.DataFrame(
    index=pd.MultiIndex.from_product(
        [
            ["Jhon", "Alia"],
            ["CS"],
            ["Python", "Java", "Dart"],
            ["Mid Term", "Final Term"],
        ],
        names=["Student", "Department", "Course", "Exam"],
    ),
    data={"Marks": [50, 40, 30, 60, 40, 40, 30, 70, 40, 50, 20, 30]},
)
print(df)
print(df.groupby(level=[1, 2, 3]).pct_change())

输出:

学生 DataFrame

计算多指数的百分比变化

作者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn