计算 Pandas 的百分比变化
Fariba Laiq
2024年2月15日
pct_change()
是 Pandas 中的一个函数,默认情况下计算前一行元素之间的百分比变化。在时间序列数据的情况下,这个函数被频繁使用。
此函数的输出是一个 DataFrame,其中包含上一行的百分比变化值。当我们调用这个函数时,我们可以指定其他行作为参数进行比较。
它适用于以下公式。
$$
Pct \space Change = {(Current-Previous) \over Previous}*100
$$
使用 pct_change()
计算 Pandas 的百分比变化
此方法接受四个可选参数,如下所示。
periods
- 具有默认值1
。它指定要移动的期间以计算百分比变化。fill_method
- 指定在计算百分比变化之前如何处理 NA。limit
- 指定在停止之前要填充的连续 NA 的数量。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 中有 missing
或 None
值。在计算百分比变化时,缺失的数据将由上一行中的相应值填充。
这里,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())
输出:
作者: Fariba Laiq
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