Попытка сделать некоторое прогнозирование в пандах. У меня есть график поступлений ежемесячных платежей, и я хочу сделать кумулятивную сумму из общей суммы - это я могу сделать с помощью .cumsum()
. Однако я хотел бы добавить 5% -ный процентный/коэффициент роста.
Пример df:
Month Payment
2018-01 1000
2018-02 2000
2018-03 500
2018-04 1000
2018-05 0
2018-06 0
Я хотел бы вывести:
Month Payment CumSum with Growth
2018-01 1000 1000
2018-02 2000 3005 (previous cumsum) * growth + 2000
2018-03 500 3510 (previous cumsum) * growth + 500
2018-04 1000 4510 (previous cumsum) * growth + 1000
2018-05 0 4515
2018-06 0 4520
Здесь быстро попробуйте:
def interest(data, rate):
#turn yearly to monthly rate
monthly = rate/12.0
#hole output
out = np.zeros_like(data, dtype = float)
#initial deposit
out[0] = data[0]
for i in range(1, len(data)):
#t+1 = t*(1+monthly) + deposit
out[i] = out[i - 1]*(1+monthly)+ data[i]
return out
Он должен работать как ожидалось:
x = pd.DataFrame({'amount':[1000,2000,500, 1000,0,0]})
interest(x.amount, 0.05)
array([1000. , 3004.16666667, 3516.68402778, 4531.33687789,
4550.21744822, 4569.17668759])
при условии постоянной роста:
growth = 0.05/12
df['aux'] = df['Payment']*(1+growth)
df.loc[0,'aux'] = df.loc[0,'Payment']
df['cumsum'] = df['aux'].cumsum()
df = df.drop('aux', axis = 1)
Выход
Month Payment cumsum
0 2018-01 1000 1000.000000
1 2018-02 2000 3008.333333
2 2018-03 500 3510.416667
3 2018-04 1000 4514.583333
4 2018-05 0 4514.583333
5 2018-06 0 4514.583333