开发手册 欢迎您!
软件开发者资料库

Python pandas.DataFrame.pct_change函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.pct_change方法的使用。

DataFrame.pct_change(self: ~FrameOrSeries, periods=1, fill_method='pad', limit=None, freq=None, **kwargs) → ~FrameOrSeries     [source]

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

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

参数

periods :int, 默认为 1

形成百分比变化所需的时间。

fill_method :str, 默认为‘pad’

如何在计算百分比更改之前处理NAs

limit :int, 默认为 None

停止前要填充的连续NAs的数量。

freq DateOffset, timedelta, 或 str(可选)

时间序列API开始使用的增量(例如,"M"BDay())。

**kwargs

其他关键字参数将传递到 DataFrame.shiftSeries.shift中。

返回值

chg :SeriesDataFrame

与调用对象的类型相同。

例子

Series

>>> s = pd.Series([90, 91, 85])>>> s0    901    912    85dtype: int64
>>> s.pct_change()0 NaN1 0.0111112 -0.065934dtype: float64
>>> s.pct_change(periods=2)0 NaN1 NaN2 -0.055556dtype: float64

看到Series中的百分比变化,其中用最后一个有效观察值填充到下一个有效观察值来填充NA

>>> s = pd.Series([90, 91, None, 85])>>> s0    90.01    91.02     NaN3    85.0dtype: float64
>>> s.pct_change(fill_method='ffill')0 NaN1 0.0111112 0.0000003 -0.065934dtype: 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      IT1980-01-01  4.0405  1.7246  804.741980-02-01  4.0963  1.7482  810.011980-03-01  4.3149  1.8519  860.13

>>> df.pct_change()                  FR        GR        IT1980-01-01       NaN       NaN       NaN1980-02-01  0.013810  0.013684  0.0065491980-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      2014GOOG   1769950   1500923   1371819APPL  30586265  40912316  41403351

>>> df.pct_change(axis='columns')      2016      2015      2014GOOG   NaN -0.151997 -0.086016APPL   NaN  0.337604  0.012002