Цикл по скользящим средним в Python - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть следующий фрейм данных, и я должен рассчитать прогноз на этот и следующий год.Для этого я умножаю среднее значение за последние 4 года на среднее значение за последние 4 отношения.

Дело в том, что я должен повторить цикл для этого года и следующего года.Я добираюсь до окончательного значения, но, конечно, есть гораздо более простой способ.

import pandas as pd
import numpy as np
df = pd.DataFrame({"DATE":[2010,2011,2013,2014,2015,2016,2017,2018,2019,2020],"PROFIT":[40,50,60,75,80,95,110,120,np.nan,np.nan]})

df['PROFIT_LOAG'] = df['PROFIT'].shift(1)
df['RATIO'] = round(df['PROFIT']/df['PROFIT_LOAG'],2)

df['PROF_AVG'] = df['PROFIT'].rolling(window=4).mean()
df['RATIO_AVG'] = df['RATIO'].rolling(window=4).mean()

#Last 2 values to predict
for i in range(8,10):

        df.loc[i,'PROFIT'] = df.loc[i-1,'PROF_AVG']*df.loc[i-1,'RATIO_AVG']
        new_prof= df['PROFIT'].rolling(window=4).mean()
        df.loc[i,'PROF_AVG'] = new_prof[i]
        new_ratio=df.loc[i,'PROFIT']/df.loc[i-1,'PROFIT']
        df.loc[i,'RATIO'] = new_ratio
        new_ratio_avg = df['RATIO'].rolling(window=4).mean()
        df.loc[i,'RATIO_AVG']=new_ratio_avg[i]

Итак, окончательный результат:

df_output = pd.DataFrame({"DATE":[2019,2020],"OUTPUT":[114.159375,120.530807]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...