Я работаю с большой панелью данных финансовой информации, однако значения немного нестабильны. Я пытаюсь рассчитать доходность каждого года по каждой акции в моей панели данных. Однако из-за пропущенных значений иногда фирмы имеют разрывы в годах, что делает невозможным практическое применение df['stock_ret'] = df.groupby(['tic'])['stock_price'].pct_change()
, поскольку это было бы неправильно. Df выглядит примерно так (просто приводя пример):
datadate month fyear ticker price
0 31/12/1998 12 1998 AAPL 188.92
1 31/12/1999 12 1999 AAPL 197.44
2 31/12/2002 12 2002 AAPL 268.13
3 31/12/2003 12 2003 AAPL 278.06
4 31/12/2004 12 2004 AAPL 288.35
5 31/12/2005 12 2005 AAPL 312.23
6 31/05/2008 5 2008 TSLA 45.67
7 31/05/2009 5 2009 TSLA 38.29
8 31/05/2010 5 2010 TSLA 42.89
9 31/05/2011 5 2011 TSLA 56.03
10 31/05/2014 5 2014 TSLA 103.45
.. ... .. .. .. ..
Я ищу фрагмент кода, который позволил бы мне понять (для каждой отдельной фирмы), есть ли пробел в данные и рассчитать доходность для двух разных серий. Точно так же:
datadate month fyear ticker price return
0 31/12/1998 12 1998 AAPL 188.92 NaN
1 31/12/1999 12 1999 AAPL 197.44 0.0451
2 31/12/2002 12 2002 AAPL 268.13 NaN
3 31/12/2003 12 2003 AAPL 278.06 0.0370
4 31/12/2004 12 2004 AAPL 288.35 0.0370
5 31/12/2005 12 2005 AAPL 312.23 0.0828
6 31/05/2008 5 2008 TSLA 45.67 NaN
7 31/05/2009 5 2009 TSLA 38.29 -0.1616
8 31/05/2010 5 2010 TSLA 42.89 0.1201
9 31/05/2011 5 2011 TSLA 56.03 0.3063
10 31/05/2014 5 2014 TSLA 103.45 NaN
.. ... .. .. .. ..
Если у вас есть какие-либо другие предложения о том, как решить эту проблему, пожалуйста, не стесняйтесь делиться своими знаниями :) Я немного неопытен, поэтому я уверен, что ваш совет может помочь!
Заранее спасибо, ребята!