我使用datetime模块绘制了一条曲线,其中x轴只是日期,但我希望能够在它们之间进行插值。例如,我想在2017-05-05上插值,即使我没有在那里放置一个值。我的代码如下:
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。通用插管
Python支持scipy package
中的几种技术例如,从文档中,可以使用
执行1D interpollationscipy.interpolate.interp1d(x, y, kind='linear'))
插入一维功能。
x和y是用于近似某个函数f的值的数组:y = f(x)。该类返回一个函数,其调用方法使用插值来查找新点的值。
从这里开始的好处是,它是一个快速简便的发布场所,需要最少的依赖性(包括在Anaconda中,例如),并且如果您希望稍后更改模型,则提供足够的灵活性。
Plotting code found in the docs:和in the docs
<强> 2。简单的1D插值
也可以找到简单的1D插值right in numpy
numpy.interp(x, xp, fp, )
一维线性插值。
将一维分段线性插值返回到具有&gt;的函数。给定离散数据点的值。
从这里开始的好处是,如果你使用matplotlib,你可能已经设置了numpy
第3。更复杂的插值
引用的Scipy包是所有典型的用例,但有时您需要一个更具普遍性的模型。 Sklearn包括许多强大的回归技术。例如,Gaussian Process允许插值,其包括除了值之外的方差估计。来自文档:
处理日期
如果您担心大多数这些数值方法都不容易输入日期,那么有几种existing (python using datetimes) (an example of conversion in matlab forums)方法可以做到这一点。