2016-12-19 126 views
1

我绘制了一个曲线,其中x轴只是使用日期时间模块的日期,但我希望能够在它们之间进行插值。例如,我想在2017-05-05上插值,即使我没有在那里放置一个值。我的代码看起来像:在x轴上插入日期曲线

import pandas as pd 
import numpy as np 
import datetime as dt 
import matplotlib.pyplot as plt 


eudata = pd.read_csv("H:/euriborspots.csv") 

months = eudata.ix[:, 'Expiry'] 
badspots = eudata.ix[:, 'Spot'] 
spots = [100 -x for x in badspots] 


dates = [dt.datetime.strptime(d,'%Y-%m-%d').date() for d in months] 
datearray = np.array(dates) 
ratearray = np.array(spots) 

ratecurve = plt.plot(datearray, ratearray) 

任何人都可以帮忙吗?

+0

什么样的语调?线性(绘制“最佳拟合”线),多项式,指数,使用机器学习技术?有些人比其他人更容易做:) –

回答

0

插值是相当广泛的话题。像往常一样,如果你有兴趣,Wikipedia是一个很好的开始兔子洞的地方,虽然首选的方法往往是非常特定领域的。在Python中,你的选择而定的顺序,我会考虑他们列出:

1.通用Interpollat​​ion

Python支持的scipy package

例如几种技术,从文档, 1D interpollat​​ion可以与

scipy.interpolate.interp1d(x, y, kind='linear')) 

来执行内插1D函数。

x和y是用于近似某些函数f的值的数组:y = f(x)。该类返回一个函数,其调用方法使用插值来查找新点的值。

开始在这里的好处是,它是一个快速简便的启动位置,只需要很少的依赖关系(包括在蟒蛇,例如),并提供足够的灵活性,如果你正在寻找后改变你的模型。

Plotting code found in the docs:in the docs

enter image description hereenter image description here

2.简单的一维插值

简单的一维插值也可以找到right in numpy

numpy.interp(x, xp, fp,) 

一维线性插值。

将离散数据点处的一维分段线性插值返回给具有>给定值的函数。

从这里开始的好处是,你可能已经建立了numpy的,如果你正在使用matplotlib

3.更复杂的内插

引用的SciPy的包中的所有典型应用案例,但有时候你想要一个更具普遍性的模型。 Sklearn包含许多强大的回归技术。例如,Gaussian Process允许插值,其中包括除了值之外的方差估计。从文档:

enter image description here


与日期

如果你担心日期不易被输入到大部分的这些数值方法处理,有几个的existing (python using datetimes)(an example of conversion in matlab forums)方式这样做。