Python 线性插值时间序列
我正在使用Python 线性插值时间序列,python,pandas,Python,Pandas,我正在使用Pandas提取汇率数据。数据并非每天都有值。我想使用Pandasinteroplate函数来填写缺失的时间序列,以便索引中包含所有日期。例如,2010-01-09和2010-01-10都缺失。interoplate函数似乎什么也没做,但我不明白为什么 from pandas_datareader import data can = data.get_data_fred('DEXCAUS') can = can.interpolate(method='linear') can = c
Pandas
提取汇率数据。数据并非每天都有值。我想使用Pandas
interoplate
函数来填写缺失的时间序列,以便索引中包含所有日期。例如,2010-01-09和2010-01-10都缺失。interoplate
函数似乎什么也没做,但我不明白为什么
from pandas_datareader import data
can = data.get_data_fred('DEXCAUS')
can = can.interpolate(method='linear')
can = can.dropna()
print can.head(10)
输出:
DEXCAUS
DATE
2010-01-04 1.0377
2010-01-05 1.0371
2010-01-06 1.0333
2010-01-07 1.0351
2010-01-08 1.0345
2010-01-11 1.0317
2010-01-12 1.0374
2010-01-13 1.0319
2010-01-14 1.0260
2010-01-15 1.0287
期望输出:
DEXCAUS
DATE
2010-01-04 1.0377
2010-01-05 1.0371
2010-01-06 1.0333
2010-01-07 1.0351
2010-01-08 1.0345
2010-01-09 some value..
2010-01-10 some value..
2010-01-11 1.0317
2010-01-12 1.0374
2010-01-13 1.0319
2010-01-14 1.0260
2010-01-15 1.0287
您需要首先重新采样:
df.resample('D').interpolate(method='linear')
Out:
DEXCAUS
DATE
2010-01-04 1.037700
2010-01-05 1.037100
2010-01-06 1.033300
2010-01-07 1.035100
2010-01-08 1.034500
2010-01-09 1.033567
2010-01-10 1.032633
2010-01-11 1.031700
2010-01-12 1.037400
2010-01-13 1.031900
2010-01-14 1.026000
2010-01-15 1.028700
您需要首先重新采样:
df.resample('D').interpolate(method='linear')
Out:
DEXCAUS
DATE
2010-01-04 1.037700
2010-01-05 1.037100
2010-01-06 1.033300
2010-01-07 1.035100
2010-01-08 1.034500
2010-01-09 1.033567
2010-01-10 1.032633
2010-01-11 1.031700
2010-01-12 1.037400
2010-01-13 1.031900
2010-01-14 1.026000
2010-01-15 1.028700