Вычислите скользящее среднее и добавьте его как признак rolling_mean. В функцию make_features() добавьте новый аргумент rolling_mean_size, который задаст ширину окна. Текущее значение ряда для расчёта скользящего среднего применять нельзя.
Примените функцию к таблице и напечатайте на экране её первые пять строк (уже в прекоде).
Подсказка
Чтобы не учитывать текущее значение, вызовите метод shift():
data['rolling_mean'] = data['PJME_MW'].shift()# < напишите код здесь >
import pandas as pd
import numpy as np
data = pd.read_csv('https://code.s3.yandex.net/datasets/energy_consumption.csv', index_col=[0], parse_dates=[0])
data.sort_index(inplace=True)
data = data.resample('1D').sum()
def make_features(data, max_lag, rolling_mean_size):
data['year'] = data.index.year
data['month'] = data.index.month
data['day'] = data.index.day
data['dayofweek'] = data.index.dayofweek
for lag in range(1, max_lag + 1):
data['lag_{}'.format(lag)] = data['PJME_MW'].shift(lag)
data['rolling_mean'] = data['PJME_MW'].shift().rolling(rolling_mean_size).mean()
return data
make_features(data, 4, 4)
print(data.head())