在熊猫中进行上采样和插值

时间:2018-02-28 07:45:06

标签: python pandas interpolation

我在上采样和插值后获得相同的结果。你有什么建议可能有什么不对吗? 以下是每年增加频率的重新采样代码:

upsampled = staff.resample('M').sum()

结果是:

upsampled
2016-01-31    17
2016-02-29     0
2016-03-31     0
2016-04-30     0
2016-05-31     0
2016-06-30     0
2016-07-31     0
2016-08-31     0
2016-09-30     0
2016-10-31    32

然后我做插值:

inter_poly = upsampled.astype(float).interpolate(method='spline',order=2)

这是插值的结果:

2016-01-31    17.0
2016-02-29     0.0
2016-03-31     0.0
2016-04-30     0.0
2016-05-31     0.0
2016-06-30     0.0
2016-07-31     0.0
2016-08-31     0.0
2016-09-30     0.0
2016-10-31    32.0 

我尝试了几种选择,但没有一种可行。

谢谢!

1 个答案:

答案 0 :(得分:0)

似乎评论部分回答了这一点,但我偶然发现了这一点,并认为我会添加一个完整的答案来帮助未来的访问者。

为了使DataFrame.interpolate()起作用,数据列中的0值必须替换为NaN值。以下代码应该可以解决问题:

temp_df = upsampled.replace(0, np.nan)
inter_poly = temp_df.interpolation(method='spline', order=1)

>>> inter_poly

2016-01-31    17.0
2016-02-29    18.7
2016-03-31    20.3
2016-04-30    22.0
2016-05-31    23.7
2016-06-30    25.3
2016-07-31    27.0
2016-08-31    28.7
2016-09-30    30.3
2016-10-31    32.0

这为您提供了插值数据列,删除了NaN。