
在处理宏观经济数据时,经常会遇到缺失值问题。在本文中,我们以固定资产投资价格指数为例,讨论填补缺失值的两种方法,及其Python实现。
通过简单分析原始数据,可以看到,固定资产投资价格指数,在1998年6月至2002年12月,是每半年发布一次。自2003年初至2019年12月,是每季度发布一次。我们希望获得月度的固定资产投资价格指数,从而对月度的固定资产投资数据进行价格折现。

scipy包的interpolate模块,可以使用线性或者二阶和三阶的样条曲线,对缺失值进行插补。插补分成两个步骤:
- 基于有取值的样本,拟合插补函数
- 将插补函数,应用于所有样本点
Python代码如下:
from scipy.interpolate import interp1d # 提取有取值的样本 _FAIPriceIndex = FAIPriceIndex.reset_index() x = np.array(_FAIPriceIndex[_FAIPriceIndex['M0012976'].notnull()].index) y = np.array(_FAIPriceIndex[_FAIPriceIndex['M0012976'].notnull()]['M0012976']) xnew = np.array(_FAIPriceIndex.index) # 拟合插值函数 f1 = interp1d(x,y) f2 = interp1d(x, y, kind='quadratic') f3 = interp1d(x, y, kind='cubic') # 对全序列插补 _FAIPriceIndex = pd.DataFrame([f1(x