【发布时间】:2018-08-14 01:21:24
【问题描述】:
我对 python 很陌生,尤其是数据库,所以请原谅任何白痴。
我正在尝试使用 12 个月的每月观察数据集进行练习,数据看起来像这样......
print(data)
2017-04-17 156
2017-05-09 216
2017-06-11 300
2017-07-29 184
2017-08-31 162
2017-09-24 91
2017-10-15 225
2017-11-03 245
2017-12-26 492
2018-01-26 485
2018-02-18 401
2018-03-09 215
2018-04-30 258
这些月度观测值是不规则的(每个月恰好有一个,但时间相差不大)。
现在,我想使用线性插值来获取每个月初的值 -
我尝试了很多方法......并且能够“手动”完成,但我正在尝试掌握 pandas 和 numpy,我知道可以用这些方法完成,这就是到目前为止,我做了一个系列来保存数据,然后我做了:
resampled1 = data.resample('MS')
interp1 = resampled1.interpolate()
print(interp1)
这打印:
2017-04-01 NaN
2017-05-01 NaN
2017-06-01 NaN
2017-07-01 NaN
2017-08-01 NaN
2017-09-01 NaN
2017-10-01 NaN
2017-11-01 NaN
2017-12-01 NaN
2018-01-01 NaN
2018-02-01 NaN
2018-03-01 NaN
2018-04-01 NaN
现在,我知道第一个 2017-4-17 应该是 NaN 作为线性插值(我相信这是默认值),在前后两点之间插值......这是不可能的,因为我没有在 4 月 1 日之前没有数据点。至于其他人......我不确定我做错了什么......可能只是因为我正在努力弄清楚 resample 正在做什么?
【问题讨论】:
-
data.resample('MS').mean()怎么样? -
您必须将数据更改为与时间数据不同的数字格式,然后使用任何类型的插值。你想要一个我想象的时间戳。
-
@coldspeed,这样做似乎会导致数据点被复制,因此 2017-04-01 设置为 156,2017-05-01 设置为 216,等等。即没有插值?
标签: python pandas numpy interpolation