Python, pandas DataFrame, используйте предыдущий год, сопоставляя номер рабочего дня и недели с даты в качестве прогнозаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python, pandas DataFrame, используйте предыдущий год, сопоставляя номер рабочего дня и недели с даты в качестве прогноза

Сообщение Anonymous »

У меня есть ежедневный временной ряд DataFrame, охватывающий много лет. Я хочу создать простой прогноз «этот день в прошлом году» в качестве прогноза на следующий год, однако я не могу просто использовать что-то вроде df.shift(365), поскольку хочу сохранить рабочие дни, а не выходные. Поэтому я хочу выбрать день, который соответствует году-1, дню недели и номеру недели, а затем использовать его в качестве прогноза на будущее (или чего-то столь же хорошего).
Я раздумывал, стоит ли создайте два столбца для дня недели и номера недели, затем создайте сводную таблицу по годам, а затем каким-то образом сдвиньте годы вперед. Но я выбрал описанный ниже подход (который на самом деле не работает и очень медленный).

Код: Выделить всё

def forecast(row):
# set the year lookup to the previous year, means no values for the first year
year = row.name.year - 1
# match the weekday as not great to compare a working day to a weekend
weekday = row.name.weekday()
# match the week number too, as not great comparing e.g. Feb to May
week = row.name.isocalendar().week

return df.loc[(df.index.year == year) &
(df.index.weekday == weekday) &
(df.index.isocalendar().week == week)]

df['prediction'] = df.apply(lambda row: forecast(row), axis=1)
Ниже приведен фрагмент моего DataFrame. Мне нужен новый столбец под названием «Прогноз», который будет nan для первого года, но с этого момента будет равен дате предыдущего года с тот же номер недели и рабочий день.

Код: Выделить всё

Day         Value
2012-04-01   9.56
2012-04-02   9.37
2012-04-03   9.72
2012-04-04  11.27
2012-04-05  12.56
...
2022-03-27  10.52
2022-03-28  10.32
2022-03-29  11.19
2022-03-30  12.66
2022-03-31  15.34
Как это сделать? В чем-то вроде Excel вы можете создать столбцы для каждого параметра, затем просто выбрать год, номер недели и рабочий день, которые вам нужны, и перетащить формулу вниз. Я предполагаю, что есть аналогичный способ использования Pandas?

Подробнее здесь: https://stackoverflow.com/questions/737 ... -number-fr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»