溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Python中讓特征值滯后一行

發(fā)布時間:2021-05-21 15:36:20 來源:億速云 閱讀:195 作者:Leah 欄目:開發(fā)技術(shù)

怎么在Python中讓特征值滯后一行?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

# 加載庫
import pandas as pd

dataframe = pd.DataFrame()

# 模擬數(shù)據(jù)
dataframe["dates"] = pd.date_range("1/1/2001", periods=5, freq="D")
dataframe["stock_price"] = [1.1,2.2,3.3,4.4,5.5]
dataframe.head()

# 讓值滯后一行
dataframe["previous_days_stock_price"] = dataframe["stock_price"].shift(1)

dataframe.head()
dates	stock_price	previous_days_stock_price
0	2001-01-01	1.1	NaN
1	2001-01-02	2.2	1.1
2	2001-01-03	3.3	2.2
3	2001-01-04	4.4	3.3
4	2001-01-05	5.5	4.4

補充:怎樣用python畫超前滯后先關(guān)圖

想要獲取更多Python學(xué)習(xí)資料,了解更多關(guān)于Python的知識,可以加Q群630390733踴躍發(fā)言,大家一起來學(xué)習(xí)討論吧!

超前滯后相關(guān)是什么

想看兩個時間序列是否相關(guān),最簡單的方法就是求二者的相關(guān)系數(shù),但是在大氣、海洋等科學(xué)問題的研究中,往往一個過程的響應(yīng)并不是實時的,可能當a過程發(fā)生以后一段時間b過程才會發(fā)生,這樣的關(guān)系往往不是同時期的相關(guān)系數(shù)可以表現(xiàn)的。

超前滯后相關(guān)就是為了看兩個過程的發(fā)生演變是否在時間的先后上有一定的相關(guān)性。

舉個例子:

有a、b兩個時間序列,長度都是十二個月,直接求相關(guān)系數(shù)就是簡單的同期相關(guān)。

如果a的1-11月對b的2-12月做相關(guān)系數(shù),就是a對b超前1個月的相關(guān);拿a的2-12月對b的1-11月做相關(guān)則稱之為a對b的滯后1月相關(guān),以此類推,就能求出n個月的超前滯后相關(guān),畫圖出來就是沿0月(同期)正負各n月。

怎么在Python中讓特征值滯后一行

摘自黃嘉佑的書《氣相統(tǒng)計分析與預(yù)報方法》,第三版,17頁

python中的實現(xiàn)

需要輸入兩個時間序列,結(jié)果為data1對data2的超前滯后相關(guān)系數(shù)的序列

from scipy.stats import pearsonr
import numpy as np
 
#超前滯后相關(guān)
def leadlagcor(data1,data2,n):
	#data1和data2為兩個時間序列,n設(shè)置做多少個時間步長的超前滯后
    a=-n
    b=-a
    c=b*2+1
    x=np.arange(-n,n+1,1)
    r=np.zeros((c,1))
    p=np.zeros((c,1))
 
    for i in range(c):
        if i<(b):
            r[n-i],p[n-i]=pearsonr(data1[:(len(data1)-i)], data2[i:])
        else:
            r[i],p[i]=pearsonr(data1[x[i]:], data2[:len(data1)-x[i]])
    return r

附贈一個可視化程序

def leadlagcor_plot(data1,data2,n):
	#data1和data2為兩個時間序列,n設(shè)置做多少個時間步長的超前滯后
    r=leadlagcor(data1,data2,n)#調(diào)用上面寫的函數(shù)做超前滯后相關(guān)
    x=range(-n,n+1,1)
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(x,r,'k--',linewidth=0.8)
    ax.axhline(0, color='k')
    
    b=ax.bar(x,np.squeeze(r),color='red')
    for bar,height in zip(b,r):
        if height<0:
            bar.set(color='blue')
     
    print('cor_max:',np.max(r),'\n','cor_min:',np.min(r)) 
    plt.savefig('%s.jpg')
    plt.show()

畫出來的結(jié)果就是這樣啦,有更好的寫法和例圖也歡迎分享~

祝大家科研順利,身心健康!

怎么在Python中讓特征值滯后一行

python的數(shù)據(jù)類型有哪些?

python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復(fù)的數(shù)據(jù)組合。

關(guān)于怎么在Python中讓特征值滯后一行問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI