2016-12-19 160 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)方式這樣做。