Создание значений скользящего агрегата во фреймах данных Pandas - PullRequest
0 голосов
/ 09 апреля 2020

Я сейчас работаю с финансовыми данными и застрял на последнем этапе моего анализа. У меня есть большая панель данных со многими разными компаниями и их доходами за эти годы, а значения по годам для одной и той же компании не упорядочены. Похоже на что-то вроде этого:

        year     ticker     return_y
0       1985      VLID       -0.5838
1       1985        KO        0.3245
2       1994       CTL       -0.3063
3       1996      DRYR       -0.1607
..       ...       ...           ...
1356    2002      CHUX       -0.2456
1357    1987       HRL       -0.0233
1358    2015        KO        0.2343
..       ...       ...           ...
56798   2017      AFMXF       0.0558
56799   2014        TER       0.0134

Я пытался создать отдельный фрейм данных, который суммирует доходы для каждой компании по скользящему графику за 3 года, и если год пропущен (например, у нас есть 1999 и 2001, но не 2000) перезапускает переход от следующего пункта. Поэтому как то так:

        3_years      ticker     return_y
0       1985-1987      VLID      -0.0245
1       1986-1988      VLID       0.0366
2       1987-1989      VLID      -0.0421
3       1993-1995      VLID      -0.1607
..       ...            ...          ...
12569   2008-2010     AFMXF       0.2349
12570   2012-2015     AFMXF       0.1112

Заранее спасибо!

1 Ответ

1 голос
/ 09 апреля 2020

Допустим, ваш фрейм данных называется df.

Короче говоря:

Вы бы сделали что-то подобное:

# ts stands for time on y-axis and security on x-axys
returns_ts = df.pivot(index='year', columns='ticker', values='return_y')
rolling_returns_ts = returns_ts.rolling(3).sum()

Это даст вам скользящий возврат в другом формате (с которым мне легче работать).

Чтобы вернуть их в описанный вами формат, вы можете:

old_format_rolling_returns = rolling_returns_ts.stack().reset_index()

Обратите внимание, что это предполагает, что ось years должна иметь формат datetime. Также обратите внимание, что для преобразования, которое вы хотите, вам нужно снова изменить формат years на тот, который вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...