Python 熊猫:推断尾部缺失的值
我有一个熊猫数据帧df,它的GDP值也与yyyy-mm时间段索引相同Python 熊猫:推断尾部缺失的值,python,pandas,Python,Pandas,我有一个熊猫数据帧df,它的GDP值也与yyyy-mm时间段索引相同 import numpy as np import pandas as pd import pandas_datareader.data as web gdp = web.DataReader("GDP", "fred", start, end).resample('M').mean().interpolate(method='linear').round().to_period('M') Date GDP 2
import numpy as np
import pandas as pd
import pandas_datareader.data as web
gdp = web.DataReader("GDP", "fred", start, end).resample('M').mean().interpolate(method='linear').round().to_period('M')
Date GDP
2015-07 16528.0
2015-08 16534.0
2015-09 16541.0
2015-10 16548.0
2015-11 16556.0
2015-12 16564.0
2016-01 16572.0
2016-02 16602.0
2016-03 16633.0
2016-04 16664.0
2016-05 16702.0
2016-06 16740.0
2016-07 16778.0
2016-08 16803.0
2016-09 16827.0
2016-10 16851.0
2016-11 16869.0
2016-12 16886.0
2017-01 16903.0
2017-02 16946.0
2017-03 16988.0
2017-04 17031.0
2017-05 17075.0
2017-06 17120.0
2017-07 17164.0
2017-08 NaN
2017-09 NaN
2017-10 NaN
2017-11 NaN
2017-12 NaN
GDP按季度公布。最新数据点为2017年第三季度。因此,我重新采样,得到每月的值,并在值丢失时进行插值。我如何使用样条曲线或3个月移动平均线等来推断填充今年剩余时间的NaN?我见过一些使用多项式的例子,但这看起来有点过头了()。我想知道是否有更简单的方法。谢谢大家! 通过使用
数据输入
df
Out[195]:
Date GDP
0 2015-07 16528.0
1 2015-08 16534.0
2 2015-09 16541.0
3 2015-10 16548.0
4 2015-11 16556.0
5 2015-12 16564.0
6 2016-01 16572.0
7 2016-02 16602.0
8 2016-03 16633.0
9 2016-04 16664.0
10 2016-05 16702.0
11 2016-06 16740.0
12 2016-07 16778.0
13 2016-08 16803.0
14 2016-09 16827.0
15 2016-10 16851.0
16 2016-11 16869.0
17 2016-12 16886.0
18 2017-01 16903.0
19 2017-02 16946.0
20 2017-03 16988.0
21 2017-04 17031.0
22 2017-05 17075.0
23 2017-06 17120.0
24 2017-07 17164.0
25 2017-08 NaN
26 2017-09 NaN
27 2017-10 NaN
28 2017-11 NaN
29 2017-12 NaN
但是,我已经在上面的代码中尝试了插值。它并没有推断出“2017-12”。它停在“2017-07”。@Zenvega看到订单=2,你加上了吗?@Zenvega这是我根据你的gdp得到的dataset@Zenvega添加数据输入并不要忘记将其赋值回我收到错误:{TypeError:float()参数必须是字符串或数字,而不是'Period'}
df
Out[195]:
Date GDP
0 2015-07 16528.0
1 2015-08 16534.0
2 2015-09 16541.0
3 2015-10 16548.0
4 2015-11 16556.0
5 2015-12 16564.0
6 2016-01 16572.0
7 2016-02 16602.0
8 2016-03 16633.0
9 2016-04 16664.0
10 2016-05 16702.0
11 2016-06 16740.0
12 2016-07 16778.0
13 2016-08 16803.0
14 2016-09 16827.0
15 2016-10 16851.0
16 2016-11 16869.0
17 2016-12 16886.0
18 2017-01 16903.0
19 2017-02 16946.0
20 2017-03 16988.0
21 2017-04 17031.0
22 2017-05 17075.0
23 2017-06 17120.0
24 2017-07 17164.0
25 2017-08 NaN
26 2017-09 NaN
27 2017-10 NaN
28 2017-11 NaN
29 2017-12 NaN