pandas.DataFrame.pct_change#

DataFrame.pct_change(periods=1, fill_method=None, freq=None, =**kwargs)[source]#

当前元素与先前元素之间的分数变化。

默认情况下,计算与前一行相比的分数变化。这对于比较时间序列元素的分数变化很有用。

注意

尽管此方法的名称如此,但它计算的是分数变化(也称为每单位变化或相对变化),而不是百分比变化。如果您需要百分比变化,请将这些值乘以 100。

参数:
periodsint, default 1

用于形成百分比变化的周期数。

fill_methodNone

必须为 None。此参数将在 pandas 的未来版本中删除。

freqDateOffset, timedelta, or str, optional

用于时间序列 API 的增量(例如,'ME' 或 BDay())。

**kwargs

其他关键字参数将传递给 DataFrame.shiftSeries.shift

返回:
Series 或 DataFrame

与调用对象相同的类型。

另请参阅

Series.diff

计算 Series 中两个元素之间的差值。

DataFrame.diff

计算 DataFrame 中两个元素之间的差值。

Series.shift

将索引移动指定的周期数。

DataFrame.shift

将索引移动指定的周期数。

示例

Series

>>> s = pd.Series([90, 91, 85])
>>> s
0    90
1    91
2    85
dtype: int64
>>> s.pct_change()
0         NaN
1    0.011111
2   -0.065934
dtype: float64
>>> s.pct_change(periods=2)
0         NaN
1         NaN
2   -0.055556
dtype: float64

在 Series 中计算百分比变化,其中使用最后一个有效观测值填充 NA,直到下一个有效值。

>>> s = pd.Series([90, 91, None, 85])
>>> s
0    90.0
1    91.0
2     NaN
3    85.0
dtype: float64
>>> s.ffill().pct_change()
0         NaN
1    0.011111
2    0.000000
3   -0.065934
dtype: float64

DataFrame

1980-01-01 至 1980-03-01 期间法郎、马克和里拉的百分比变化。

>>> df = pd.DataFrame(
...     {
...         "FR": [4.0405, 4.0963, 4.3149],
...         "GR": [1.7246, 1.7482, 1.8519],
...         "IT": [804.74, 810.01, 860.13],
...     },
...     index=["1980-01-01", "1980-02-01", "1980-03-01"],
... )
>>> df
                FR      GR      IT
1980-01-01  4.0405  1.7246  804.74
1980-02-01  4.0963  1.7482  810.01
1980-03-01  4.3149  1.8519  860.13
>>> df.pct_change()
                  FR        GR        IT
1980-01-01       NaN       NaN       NaN
1980-02-01  0.013810  0.013684  0.006549
1980-03-01  0.053365  0.059318  0.061876

GOOG 和 APPL 股票交易量的百分比变化。显示计算列之间的百分比变化。

>>> df = pd.DataFrame(
...     {
...         "2016": [1769950, 30586265],
...         "2015": [1500923, 40912316],
...         "2014": [1371819, 41403351],
...     },
...     index=["GOOG", "APPL"],
... )
>>> df
          2016      2015      2014
GOOG   1769950   1500923   1371819
APPL  30586265  40912316  41403351
>>> df.pct_change(axis="columns", periods=-1)
          2016      2015  2014
GOOG  0.179241  0.094112   NaN
APPL -0.252395 -0.011860   NaN