在x轴上插入带有日期的曲线

时间:2016-12-19 16:12:59

标签: python matplotlib interpolation

我使用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)

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

插值是一个相当广泛的话题。像往常一样,Wikipedia是开始挖洞的好地方,如果你感兴趣的话,尽管首选的方法往往是非常特定领域的。在python中,您的选项可能按照我认为的顺序列出:

<强> 1。通用插管

Python支持scipy package

中的几种技术

例如,从文档中,可以使用

执行1D interpollat​​ion
scipy.interpolate.interp1d(x, y, kind='linear'))
  

插入一维功能。

     

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

从这里开始的好处是,它是一个快速简便的发布场所,需要最少的依赖性(包括在Anaconda中,例如),并且如果您希望稍后更改模型,则提供足够的灵活性。

Plotting code found in the docs:in the docs

enter image description here enter image description here

<强> 2。简单的1D插值

也可以找到简单的1D插值right in numpy

numpy.interp(x, xp, fp, )
  

一维线性插值。

     

将一维分段线性插值返回到具有&gt;的函数。给定离散数据点的值。

从这里开始的好处是,如果你使用matplotlib,你可能已经设置了numpy

第3。更复杂的插值

引用的Scipy包是所有典型的用例,但有时您需要一个更具普遍性的模型。 Sklearn包括许多强大的回归技术。例如,Gaussian Process允许插值,其包括除了值之外的方差估计。来自文档:

enter image description here

处理日期

如果您担心大多数这些数值方法都不容易输入日期,那么有几种existing (python using datetimes) (an example of conversion in matlab forums)方法可以做到这一点。