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.shift 或 Series.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