pandas.DataFrame.rolling¶

DataFrame.
rolling
(self, window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)[source]¶ Provide rolling window calculations.
 Parameters
 windowint, offset, or BaseIndexer subclass
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 timeperiod. This is only valid for datetimelike indexes.
If a BaseIndexer subclass is passed, calculates the window boundaries based on the defined
get_window_bounds
method. Additional rolling keyword arguments, namely min_periods, center, and closed will be passed to get_window_bounds. min_periodsint, 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, min_periods will default to 1. Otherwise, min_periods will default to the size of the window.
 centerbool, default False
Set the labels at the center of the window.
 win_typestr, default None
Provide a window type. If
None
, all points are evenly weighted. See the notes below for further information. onstr, optional
For a DataFrame, a datetimelike column or MultiIndex level on which to calculate the rolling window, rather than the DataFrame’s index. Provided integer column is ignored and excluded from result since an integer index is not used to calculate the rolling window.
 axisint or str, default 0
 closedstr, default None
Make the interval closed on the ‘right’, ‘left’, ‘both’ or ‘neither’ endpoints. For offsetbased windows, it defaults to ‘right’. For fixed windows, defaults to ‘both’. Remaining cases not implemented for fixed windows.
 Returns
 a Window or Rolling subclassed 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
.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)exponential
(needs tau), center is set to None.
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 0.5 2 1.5 3 NaN 4 NaN
Rolling sum with a window length of 2, using the ‘gaussian’ window type (note how we need to specify std).
>>> df.rolling(2, win_type='gaussian').sum(std=3) B 0 NaN 1 0.986207 2 2.958621 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 explicitly 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 notaregular frequency), timeindexed 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 20130101 09:00:00 0.0 20130101 09:00:02 1.0 20130101 09:00:03 2.0 20130101 09:00:05 NaN 20130101 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 20130101 09:00:00 0.0 20130101 09:00:02 1.0 20130101 09:00:03 3.0 20130101 09:00:05 NaN 20130101 09:00:06 4.0