Pandas:推断泰安缺失值

2024-04-26 14:44:47 发布

您现在位置: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
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

国内生产总值按季度公布。最新数据点为2017年第三季度。所以我重新取样,得到每月的值,然后在缺失值时进行插值。我如何用样条曲线或3个月移动平均线等来外推填补余下的NaN?我见过一些使用多项式的例子,但这看起来有点过头了(pandas extrapolation of polynomial)。我想知道有没有更简单的方法。谢谢您!在


Tags: 数据importnumpywebpandasdfasnp
1条回答
网友
1楼 · 发布于 2024-04-26 14:44:47

通过使用interpolate

df.GDP=df.GDP.interpolate(method='spline', order=2)

df
Out[197]: 
       Date           GDP
0   2015-07  16528.000000
1   2015-08  16534.000000
2   2015-09  16541.000000
3   2015-10  16548.000000
4   2015-11  16556.000000
5   2015-12  16564.000000
6   2016-01  16572.000000
7   2016-02  16602.000000
8   2016-03  16633.000000
9   2016-04  16664.000000
10  2016-05  16702.000000
11  2016-06  16740.000000
12  2016-07  16778.000000
13  2016-08  16803.000000
14  2016-09  16827.000000
15  2016-10  16851.000000
16  2016-11  16869.000000
17  2016-12  16886.000000
18  2017-01  16903.000000
19  2017-02  16946.000000
20  2017-03  16988.000000
21  2017-04  17031.000000
22  2017-05  17075.000000
23  2017-06  17120.000000
24  2017-07  17164.000000
25  2017-08  17211.095399
26  2017-09  17258.357329
27  2017-10  17306.504998
28  2017-11  17355.538404
29  2017-12  17405.457549

数据输入

^{pr2}$

相关问题 更多 >