# pandas.DataFrame.pct_change

`DataFrame.``pct_change`(periods=1, fill_method='pad', limit=None, freq=None, **kwargs)

  Percentage change between the current and a prior element.

  Computes the percentage change from the immediately previous row by default. This is useful in comparing the percentage of change in a time series of elements.

  Parameters:

  periods : int, default 1

  > Periods to shift for forming percent change.

  fill_method : str, default ‘pad’

  > How to handle NAs before computing percent changes.

  limit : int, default None

  > The number of consecutive NAs to fill before stopping.

  freq : DateOffset, timedelta, or offset alias string, optional

  > Increment to use from time series API (e.g. ‘M’ or BDay()).

  **kwargs

  > Additional keyword arguments are passed into DataFrame.shift or Series.shift.

  Returns:

  chg : Series or DataFrame

  > The same type as the calling object.

  See also

  `Series.diff`
    Compute the difference of two elements in a Series.
  `DataFrame.diff`
    Compute the difference of two elements in a DataFrame.
  `Series.shift`
    Shift the index by some number of periods.
  `DataFrame.shift`
    Shift the index by some number of periods.

  Examples

  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

  See the percentage change in a Series where filling NAs with last valid observation forward to next valid.

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

      >>> s.pct_change(fill_method='ffill')
      0         NaN
      1    0.011111
      2    0.000000
      3   -0.065934
      dtype: float64

  DataFrame

  Percentage change in French franc, Deutsche Mark, and Italian lira from 1980-01-01 to 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

  Percentage of change in GOOG and APPL stock volume. Shows computing the percentage change between columns.

      >>> 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')
            2016      2015      2014
      GOOG   NaN -0.151997 -0.086016
      APPL   NaN  0.337604  0.012002

Scroll To Top