我已经为我的数据计算了月度滚动平均值,但计算有一个月的滞后(延迟(,因此如果我们在10月份,结果需要提供9月份的月度平均值,以此类推。考虑到这种滞后,我可以在滚动平均数中添加什么参数?
history_data_resampled.rolling(window = 12).mean()
有多种方法可以实现这一点。我假设history_data_resampled
有一天的频率,并且您使用的是pandas
:
import pandas as pd
import numpy as np
# == Generating Random DataFrame ===============================
dates = pd.period_range('2021-01-01', '2022-12-31', freq='d')
random_values = np.random.randint(0, 120, dates.shape[0])
df = pd.DataFrame({'date': dates, 'value': random_values})
# == Moving average =============================================
# Generating a monthly average, with a period of 12 months, and 1 month of lag:
df.set_index('date').resample("1M")['value'].sum().rolling(12).mean()
# Outputs:
"""
date
2021-01 NaN
2021-02 NaN
2021-03 NaN
2021-04 NaN
2021-05 NaN
2021-06 NaN
2021-07 NaN
2021-08 NaN
2021-09 NaN
2021-10 NaN
2021-11 NaN
2021-12 1644.750000
2022-01 1648.416667
2022-02 1663.583333
2022-03 1696.166667
2022-04 1747.666667
2022-05 1766.750000
2022-06 1783.166667
2022-07 1825.083333
2022-08 1814.166667
2022-09 1792.250000
2022-10 1809.833333
2022-11 1789.166667
2022-12 1798.166667
Freq: M, Name: value, dtype: float64
"""
在上面的例子中,我们将数据重新采样到每月一次的频率,将同一个月的所有值相加,然后计算每个月前12个月的平均值。我们使用.resample("1M")['value'].sum()
将特定月份的所有观测值相加。
请注意,在'2021-11'
之前,我们无法计算任何值,因为我们的数据要求我们在数据集中有来自'2020'
的值。