Как рассчитать SMA по месяцам на основе данных за недели? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть dataframe с данными 100 Keys(column 1) и 6 months (с января по июнь в формате столбца, например 2019_Jan_Week1,2019_Jan_Week2 etc. till June). Повестка дня - forecast for future 3 months (from July to Sep) с использованием простого скользящего среднего за последние 6 месяцев. Например, дляПо прогнозу на июльскую неделю1, перемещение average должно быть рассчитано с использованием 2019_Jan_Week1,2019,Feb_Week1,2019_Mar_Week1,2019_Apr_Week1,2019_May_Week1, and 2019_Jun_Week1. Вопрос в том, как эффективно и быстро вычислить эту операцию? В настоящее время я использую цикл For, который занимает огромное количество времени?

Я пыталсяиспользуется для цикла, но это занимает огромное количество времени.

counter=1
for keyIndex in range(0,len(finalForecastingData)):
    print(keyIndex)
    for forcastingMonthsIndex in range(31,columns):
        finalForecastingData.iloc[keyIndex,forcastingMonthsIndex] = finalForecastingData.iloc[keyIndex,counter]+finalForecastingData.iloc[keyIndex,counter+5]+finalForecastingData.iloc[keyIndex,counter+10]+finalForecastingData.iloc[keyIndex,counter+15]+finalForecastingData.iloc[keyIndex,counter+20]
        counter = counter+1
    counter=1

1 Ответ

0 голосов
/ 04 октября 2019

Добро пожаловать в stackoverflow.

Вы можете очень легко получить скользящее среднее с пандами .rolling('60d').mean(). Для этого вам нужно преобразовать данные времени в формат панд Datetime с помощью pd.to_datetime() и установить их как индекс с помощью set_index().

Вы также должны проверить https://stackoverflow.com/help/minimal-reproducible-example. Это действительно помогает привести пример данных. С образцом DataFrame становится намного проще дать вам конкретный код, а не направление, в котором нужно искать.

...