Я работаю с большой панелью данных финансовых ценностей. К сожалению, поскольку я взял данные из базы данных, информация получилась немного пятнистой (много значений NaN). То, что я хотел бы сделать, это заполнить пропущенные значения с помощью линейной интерполяции.
df выглядит примерно так (просто на примере двух компаний):
year ticker tot_assets
0 2001 ANTQ NaN
1 2002 ANTQ NaN
2 2003 ANTQ 14.56
3 2004 ANTQ 14.99
4 2005 ANTQ NaN
5 1999 AMFD 2.44
6 2000 AMFD NaN
7 2001 AMFD 1.89
8 2002 AMFD NaN
9 2004 AMFD 3.78
10 2005 AMFD 3.82
.. ... ... ...
Как вы Как видно из примера, иногда NaN запускается в первый год доступных данных - поэтому я не уверен, рекомендуется ли вставлять ноль и интерполировать оттуда или можно выполнить обратную линейную интерполяцию.
Кроме того, как вы можете видеть из примера AMFD, иногда данные пропускаются несколько лет, поэтому было бы неплохо, если бы мы могли это учитывать.
Самая близкая вещь, которую я смог придумать, была:
df['tot_assets'] = df.groupby(['tic'])['tot_assets'].fillna(method = 'bfill')
Но, конечно, это не идеально, потому что это не очень хорошо решает проблемы, которые я упомянул.
Кроме того, я также пытался использовать и адаптировать уже имеющуюся документацию по интерполяции, но она не сработала - в основном потому, что я не очень опытен с Pandas.