У меня есть следующий фрейм данных, и я должен рассчитать прогноз на этот и следующий год.Для этого я умножаю среднее значение за последние 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]})