Python 如何讓特征值滯后一行
# 加載庫(kù)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()datesstock_priceprevious_days_stock_price02001-01-011.1NaN12001-01-022.21.122001-01-033.32.232001-01-044.43.342001-01-055.54.4
補(bǔ)充:怎樣用python畫(huà)超前滯后先關(guān)圖
想要獲取更多Python學(xué)習(xí)資料,了解更多關(guān)于Python的知識(shí),可以加Q群630390733踴躍發(fā)言,大家一起來(lái)學(xué)習(xí)討論吧!
超前滯后相關(guān)是什么想看兩個(gè)時(shí)間序列是否相關(guān),最簡(jiǎn)單的方法就是求二者的相關(guān)系數(shù),但是在大氣、海洋等科學(xué)問(wèn)題的研究中,往往一個(gè)過(guò)程的響應(yīng)并不是實(shí)時(shí)的,可能當(dāng)a過(guò)程發(fā)生以后一段時(shí)間b過(guò)程才會(huì)發(fā)生,這樣的關(guān)系往往不是同時(shí)期的相關(guān)系數(shù)可以表現(xiàn)的。
超前滯后相關(guān)就是為了看兩個(gè)過(guò)程的發(fā)生演變是否在時(shí)間的先后上有一定的相關(guān)性。
舉個(gè)例子:有a、b兩個(gè)時(shí)間序列,長(zhǎng)度都是十二個(gè)月,直接求相關(guān)系數(shù)就是簡(jiǎn)單的同期相關(guān)。
如果a的1-11月對(duì)b的2-12月做相關(guān)系數(shù),就是a對(duì)b超前1個(gè)月的相關(guān);拿a的2-12月對(duì)b的1-11月做相關(guān)則稱(chēng)之為a對(duì)b的滯后1月相關(guān),以此類(lèi)推,就能求出n個(gè)月的超前滯后相關(guān),畫(huà)圖出來(lái)就是沿0月(同期)正負(fù)各n月。
摘自黃嘉佑的書(shū)《氣相統(tǒng)計(jì)分析與預(yù)報(bào)方法》,第三版,17頁(yè)
python中的實(shí)現(xiàn)需要輸入兩個(gè)時(shí)間序列,結(jié)果為data1對(duì)data2的超前滯后相關(guān)系數(shù)的序列
from scipy.stats import pearsonrimport numpy as np #超前滯后相關(guān)def leadlagcor(data1,data2,n):#data1和data2為兩個(gè)時(shí)間序列,n設(shè)置做多少個(gè)時(shí)間步長(zhǎng)的超前滯后 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
附贈(zèng)一個(gè)可視化程序
def leadlagcor_plot(data1,data2,n):#data1和data2為兩個(gè)時(shí)間序列,n設(shè)置做多少個(gè)時(shí)間步長(zhǎng)的超前滯后 r=leadlagcor(data1,data2,n)#調(diào)用上面寫(xiě)的函數(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()
畫(huà)出來(lái)的結(jié)果就是這樣啦,有更好的寫(xiě)法和例圖也歡迎分享~
祝大家科研順利,身心健康!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. IntelliJ IDEA導(dǎo)入jar包的方法2. Python requests庫(kù)參數(shù)提交的注意事項(xiàng)總結(jié)3. 詳談ajax返回?cái)?shù)據(jù)成功 卻進(jìn)入error的方法4. python ansible自動(dòng)化運(yùn)維工具執(zhí)行流程5. javascript實(shí)現(xiàn)雪花飄落效果6. JavaScript中l(wèi)ayim之整合右鍵菜單的示例代碼7. python操作mysql、excel、pdf的示例8. 匹配模式 - XSL教程 - 49. 通過(guò)Python pyecharts輸出保存圖片代碼實(shí)例10. vue-electron中修改表格內(nèi)容并修改樣式
