# pandas.DataFrame.rolling

`DataFrame.``rolling`(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)

  Provides rolling window calculations.

  New in version 0.18.0.

  Parameters:

  window : int, or offset

  > Size of the moving window. This is the number of observations used for calculating the statistic. Each window will be a fixed size.

  > If its an offset then this will be the time period of each window. Each window will be a variable sized based on the observations included in the time-period. This is only valid for datetimelike indexes. This is new in 0.19.0

  min_periods : int, default None

  > Minimum number of observations in window required to have a value (otherwise result is NA). For a window that is specified by an offset, this will default to 1.

  freq : string or DateOffset object, optional (default None)

  > Deprecated since version 0.18.0: Frequency to conform the data to before computing the statistic. Specified as a frequency string or DateOffset object.

  center : boolean, default False

  > Set the labels at the center of the window.

  win_type : string, default None

  > Provide a window type. See the notes below.

  on : string, optional

  > For a DataFrame, column on which to calculate the rolling window, rather than the index

  closed : string, default None

  > Make the interval closed on the ‘right’, ‘left’, ‘both’ or ‘neither’ endpoints. For offset-based windows, it defaults to ‘right’. For fixed windows, defaults to ‘both’. Remaining cases not implemented for fixed windows.

  > New in version 0.20.0.

  axis : int or string, default 0

  Returns: | a Window or Rolling sub-classed for the particular operation

  Notes

  By default, the result is set to the right edge of the window. This can be changed to the center of the window by setting `center=True`.

  The freq keyword is used to conform time series data to a specified frequency by resampling the data. This is done with the default parameters of `resample()` (i.e. using the mean).

  To learn more about the offsets & frequency strings, please see this link.

  The recognized win_types are:

  - `boxcar`
  - `triang`
  - `blackman`
  - `hamming`
  - `bartlett`
  - `parzen`
  - `bohman`
  - `blackmanharris`
  - `nuttall`
  - `barthann`
  - `kaiser` (needs beta)
  - `gaussian` (needs std)
  - `general_gaussian` (needs power, width)
  - `slepian` (needs width).

  If `win_type=None` all points are evenly weighted. To learn more about different window types see scipy.signal window functions.

  Examples

      >>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
      >>> df
           B
      0  0.0
      1  1.0
      2  2.0
      3  NaN
      4  4.0

  Rolling sum with a window length of 2, using the ‘triang’ window type.

      >>> df.rolling(2, win_type='triang').sum()
           B
      0  NaN
      1  1.0
      2  2.5
      3  NaN
      4  NaN

  Rolling sum with a window length of 2, min_periods defaults to the window length.

      >>> df.rolling(2).sum()
           B
      0  NaN
      1  1.0
      2  3.0
      3  NaN
      4  NaN

  Same as above, but explicity set the min_periods

      >>> df.rolling(2, min_periods=1).sum()
           B
      0  0.0
      1  1.0
      2  3.0
      3  2.0
      4  4.0

  A ragged (meaning not-a-regular frequency), time-indexed DataFrame

      >>> df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},
      ....:                 index = [pd.Timestamp('20130101 09:00:00'),
      ....:                          pd.Timestamp('20130101 09:00:02'),
      ....:                          pd.Timestamp('20130101 09:00:03'),
      ....:                          pd.Timestamp('20130101 09:00:05'),
      ....:                          pd.Timestamp('20130101 09:00:06')])

      >>> df
                             B
      2013-01-01 09:00:00  0.0
      2013-01-01 09:00:02  1.0
      2013-01-01 09:00:03  2.0
      2013-01-01 09:00:05  NaN
      2013-01-01 09:00:06  4.0

  Contrasting to an integer rolling window, this will roll a variable length window corresponding to the time period. The default for min_periods is 1.

      >>> df.rolling('2s').sum()
                             B
      2013-01-01 09:00:00  0.0
      2013-01-01 09:00:02  1.0
      2013-01-01 09:00:03  3.0
      2013-01-01 09:00:05  NaN
      2013-01-01 09:00:06  4.0

Scroll To Top