Python 如何讓特征值滯后一行
看代碼吧~
# 加載庫
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
補(bǔ)充:怎樣用python畫超前滯后先關(guān)圖
想要獲取更多Python學(xué)習(xí)資料,了解更多關(guān)于Python的知識(shí),可以加Q群630390733踴躍發(fā)言,大家一起來學(xué)習(xí)討論吧!
超前滯后相關(guān)是什么
想看兩個(gè)時(shí)間序列是否相關(guān),最簡(jiǎn)單的方法就是求二者的相關(guān)系數(shù),但是在大氣、海洋等科學(xué)問題的研究中,往往一個(gè)過程的響應(yīng)并不是實(shí)時(shí)的,可能當(dāng)a過程發(fā)生以后一段時(shí)間b過程才會(huì)發(fā)生,這樣的關(guān)系往往不是同時(shí)期的相關(guān)系數(shù)可以表現(xiàn)的。
超前滯后相關(guān)就是為了看兩個(gè)過程的發(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)則稱之為a對(duì)b的滯后1月相關(guān),以此類推,就能求出n個(gè)月的超前滯后相關(guān),畫圖出來就是沿0月(同期)正負(fù)各n月。

摘自黃嘉佑的書《氣相統(tǒng)計(jì)分析與預(yù)報(bào)方法》,第三版,17頁
python中的實(shí)現(xiàn)
需要輸入兩個(gè)時(shí)間序列,結(jié)果為data1對(duì)data2的超前滯后相關(guān)系數(shù)的序列
from scipy.stats import pearsonr
import 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)用上面寫的函數(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é)果就是這樣啦,有更好的寫法和例圖也歡迎分享~
祝大家科研順利,身心健康!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
django 做 migrate 時(shí) 表已存在的處理方法
今天小編就為大家分享一篇django 做 migrate 時(shí) 表已存在的處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python圖像處理之簡(jiǎn)單畫板實(shí)現(xiàn)方法示例
這篇文章主要介紹了Python圖像處理之簡(jiǎn)單畫板實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python基于cv2模塊與numpy模塊的數(shù)值計(jì)算及矩形圖形繪制簡(jiǎn)單操作技巧,需要的朋友可以參考下2018-08-08
Python實(shí)現(xiàn)將字典內(nèi)容保存到Excel文件的四種方法
Python 中的字典是一個(gè)數(shù)據(jù)集合,其中每個(gè)值對(duì)應(yīng)一個(gè)鍵,它們是無序的、可變的,并且對(duì)字典中存儲(chǔ)的值和鍵的數(shù)據(jù)類型沒有限制,本文給大家介紹了Python實(shí)現(xiàn)將字典內(nèi)容保存到Excel文件的四種方法,需要的朋友可以參考下2024-07-07
用Python編寫一個(gè)鼠標(biāo)自動(dòng)點(diǎn)擊程序詳細(xì)過程
這篇文章主要給大家介紹了關(guān)于如何使用Python編寫一個(gè)鼠標(biāo)自動(dòng)點(diǎn)擊程序,通過使用pyautogui庫,可以實(shí)現(xiàn)模擬鼠標(biāo)點(diǎn)擊的功能,文章還介紹了如何使用time庫和threading庫來控制點(diǎn)擊間隔時(shí)間和實(shí)現(xiàn)多線程,需要的朋友可以參考下2024-11-11
Appium+Python實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)化登錄測(cè)試的實(shí)現(xiàn)
這篇文章主要介紹了Appium+Python實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)化登錄測(cè)試的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
詳解使用 pyenv 管理多個(gè)版本 python 環(huán)境
本篇文章主要介紹了詳解使用 pyenv 管理多個(gè)版本 python 環(huán)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
vscode autopep8無法格式化python代碼問題解決
這篇文章主要為大家介紹了vscode autopep8無法格式化python代碼問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09

