Измените еженедельные данные на ежеквартальные или ежемесячные, без разницы в количестве недель. - PullRequest
1 голос
/ 12 февраля 2020

Итак, у меня есть еженедельные данные о продажах:

# Create the dataframe
test_df = pd.DataFrame({'year': [2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2018], 'week': [9, 10, 11, 12, 13, 14, 15, 16, 17], 'sales': [100, 200, 100, 300, 200, 100, 200, 100, 300]})

# Convert the week and 
test_df['date'] = test_df["year"].astype(str) + '-' + test_df["week"].astype(str)
test_df['date'] = pd.to_datetime(test_df['date'] + '0', format='%Y-%W%w')
test_df

Это результирующий фрейм данных:


    year    week  sales date
0   2018    9     100   2018-03-04
1   2018    10    200   2018-03-11
2   2018    11    100   2018-03-18
3   2018    12    300   2018-03-25
4   2018    13    200   2018-04-01
5   2018    14    100   2018-04-08
6   2018    15    200   2018-04-15
7   2018    16    100   2018-04-22
8   2018    17    300   2018-04-29

Теперь я хотел бы сгладить эти данные и пересчитать их по месяцам или кварталам , чтобы сделать более стабильные долгосрочные прогнозы. Однако при повторной выборке данных в квартальные или месячные данные каждый период будет иметь разное количество недель, примерно 4 и 5 (или 13, 12, 11 в случае ежеквартально):

test_df = test_df.set_index('date')
test_df = test_df.resample('M').sum()
test_df.drop(columns=['year', 'week'])

Это дает:

            sales
date    
2018-03-31  700
2018-04-30  900

Теперь я понимаю, что месяцы имеют разное количество недель. Тем не менее, кварталы должны всегда иметь одинаковое количество недель, если первая неделя начинается 1 января, верно?

Мой вопрос: я что-то упускаю при преобразовании год-неделя -> дата? Это может стать проблемой, если я создам из этого различные подпоследовательности для обучения модели прогнозирования.

...