Python: вычисление 5-летнего скользящего CAGR значений, которые необходимо сгруппировать из фрейма данных - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть дата-фрейм с историческими рыночными максимумами, для которого мне нужно рассчитать их 5-летние совокупные годовые темпы роста (CAGR).Однако в фрейме данных находятся сотни компаний с 20-летним значением, поэтому мне нужно иметь возможность изолировать данные каждой компании для вычисления их CAGR.Как мне это сделать?

Функция для расчета CAGR: (end/start)^(1/# years)-1.Я никогда не использовал .groupby() или .apply(), поэтому я не знаю, как реализовать уравнение CAGR для скользящих значений.

Вот скриншот части кадра данных, поэтому у вас есть визуальное представлението, что я пытаюсь использовать: Screehot of dataframe.

Любое руководство будет с благодарностью!

1 Ответ

0 голосов
/ 27 сентября 2019

Предполагается, что на компанию приходится 1 значение в год.Вы можете уменьшить дату до года.Это намного проще.Нет необходимости группировать или подавать заявку.

Скажите, что ваш фрейм данных имеет имя df.Во-первых, уменьшите дату до года:

df['year'] = df['Date'].dt.year

Во-вторых, добавьте год + 5

df['year+5'] = df['year'] + 5

В-третьих, объедините «df» с собой:

df_new = pandas.merge(df, df, how='inner', left_on=['Instrument', 'year'], right_on=['Instrument','year+5'], suffixes=['_start', '_end'])

Наконец, вычислите скользящий CAGR

df_new['CAGR'] = (df_new['Company Market Cap_end']/df_new['Company Market Cap_start'])**(0.2)-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...