【发布时间】:2020-04-13 10:26:30
【问题描述】:
我正在处理财务价值的大型面板数据。不幸的是,当我从数据库中获取数据时,信息结果有点参差不齐(很多 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 没有超级经验。
【问题讨论】:
标签: python pandas numpy finance panel-data