6.22. DataFrame Rolling
.resample(freq).rolling(window=10).shift(periods=1, freq="D").diff()
6.22.1. SetUp
>>> import pandas as pd
>>>
>>>
>>> df = pd.DataFrame([
... {'firstname': 'Alice', 'lastname': 'Apricot', 'age': 30},
... {'firstname': 'Bob', 'lastname': 'Blackthorn', 'age': 31},
... {'firstname': 'Carol', 'lastname': 'Corn', 'age': 32},
... {'firstname': 'Dave', 'lastname': 'Durian', 'age': 33},
... {'firstname': 'Eve', 'lastname': 'Elderberry', 'age': 34},
... {'firstname': 'Mallory', 'lastname': 'Melon', 'age': 15},
... ], index=pd.date_range('2000-01-01', periods=6))
>>> df
firstname lastname age
2000-01-01 Alice Apricot 30
2000-01-02 Bob Blackthorn 31
2000-01-03 Carol Corn 32
2000-01-04 Dave Durian 33
2000-01-05 Eve Elderberry 34
2000-01-06 Mallory Melon 15
6.22.2. Rolling
Compute rolling statistics
Series.rolling(window=10)DataFrame.rolling(window=10)
Figure 6.17. Rolling Average
>>> df['age'].rolling(window=3)
Rolling [window=3,center=False,method=single]
>>> df['age'].rolling(window=3).mean()
2000-01-01 NaN
2000-01-02 NaN
2000-01-03 31.000000
2000-01-04 32.000000
2000-01-05 33.000000
2000-01-06 27.333333
Freq: D, Name: age, dtype: float64
6.22.3. Resample
Resample time-series data to a different frequency
Series.resample(freq)DataFrame.resample(freq)
>>> df['age'].resample('W')
<pandas.core.resample.DatetimeIndexResampler object at 0x...>
>>> df['age'].resample('W').mean()
2000-01-02 30.5
2000-01-09 28.5
Freq: W-SUN, Name: age, dtype: float64
6.22.4. Shift
Subtract DataFrame object from other shifted by index
DataFrame.shift(periods=1, freq="D")Series.shift(periods=1, freq="D")
>>> df['age'] - df['age'].shift(periods=1, freq='D')
2000-01-01 NaN
2000-01-02 1.0
2000-01-03 1.0
2000-01-04 1.0
2000-01-05 1.0
2000-01-06 -19.0
2000-01-07 NaN
Freq: D, Name: age, dtype: float64
6.22.5. Diff
Subtract next row from the previous
DataFrame.diff(periods=1)Series.diff(periods=1)
>>> df['age'].diff()
2000-01-01 NaN
2000-01-02 1.0
2000-01-03 1.0
2000-01-04 1.0
2000-01-05 1.0
2000-01-06 -19.0
Freq: D, Name: age, dtype: float64
>>> df['age'].diff(2)
2000-01-01 NaN
2000-01-02 NaN
2000-01-03 2.0
2000-01-04 2.0
2000-01-05 2.0
2000-01-06 -18.0
Freq: D, Name: age, dtype: float64