python?DataFrame的shift()方法的使用
在python數(shù)據(jù)分析中,可以使用shift()方法對DataFrame對象的數(shù)據(jù)進行位置的前滯、后滯移動。
語法
DataFrame.shift(periods=1, freq=None, axis=0)
- periods可以理解為移動幅度的次數(shù),shift默認一次移動1個單位,也默認移動1次(periods默認為1),則移動的長度為1 * periods。
- periods可以是正數(shù),也可以是負數(shù)。負數(shù)表示前滯,正數(shù)表示后滯。
- freq是一個可選參數(shù),默認為None,可以設為一個timedelta對象。適用于索引為時間序列數(shù)據(jù)時。
- freq為None時,移動的是其他數(shù)據(jù)的值,即移動periods*1個單位長度。
- freq部位None時,移動的是時間序列索引的值,移動的長度為periods * freq個單位長度。
- axis默認為0,表示對列操作。如果為行則表示對行操作。
移動滯后沒有對應值的默認為NaN。
示例
period為正,無freq
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4'] df = pd.DataFrame(data=data, index=index, columns=['close']) df.index.name = 'date' print(df) print("=========================================") df['昨收'] = df['close'].shift() df['change'] = df['close'] - df['close'].shift() print(df)
period為負,無freq
import pandas as pd pd.set_option('display.unicode.east_asian_width', True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4'] index = pd.to_datetime(index) index.name = 'date' df = pd.DataFrame(data=data, index=index, columns=['昨收']) print(df) print("=========================================") df['close'] = df['昨收'].shift(-1) df['change'] = df['昨收'].shift(-1) - df['close'] print(df)
period為正,freq為正
import pandas as pd import datetime pd.set_option('display.unicode.east_asian_width', True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4'] index = pd.to_datetime(index) index.name = 'date' df = pd.DataFrame(data=data, index=index, columns=['close']) print(df) print("=========================================") print(df.shift(periods=2, freq=datetime.timedelta(3)))
如圖,索引列的時間序列數(shù)據(jù)滯后了6天。(二乘以三)
period為正,freq為負
import pandas as pd import datetime pd.set_option('display.unicode.east_asian_width', True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4'] index = pd.to_datetime(index) index.name = 'date' df = pd.DataFrame(data=data, index=index, columns=['close']) print(df) print("=========================================") print(df.shift(periods=3, freq=datetime.timedelta(-3)))
如圖,索引列的時間序列數(shù)據(jù)前滯了9天(三乘以負三)
period為負,freq為負
import pandas as pd import datetime pd.set_option('display.unicode.east_asian_width', True) data = [51.0, 52.33, 51.21, 54.23, 56.78] index = ['2022-2-28', '2022-3-1', '2022-3-2', '2022-3-3', '2022-3-4'] index = pd.to_datetime(index) index.name = 'date' df = pd.DataFrame(data=data, index=index, columns=['close']) print(df) print("=========================================") print(df.shift(periods=-3, freq=datetime.timedelta(-3)))
如圖,索引列的時間序列數(shù)據(jù)滯后了9天(負三乘以負三)
到此這篇關(guān)于python DataFrame的shift()方法的使用的文章就介紹到這了,更多相關(guān)python DataFrame shift() 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3.9環(huán)境搭建RobotFramework的詳細過程
Robot Framework是一個基于Python的,可擴展的關(guān)鍵字驅(qū)動的測試自動化框架,用于端到端驗收測試和驗收測試驅(qū)動開發(fā)(ATDD),這篇文章主要介紹了Python3.9環(huán)境搭建RobotFramework的詳細過程,需要的朋友可以參考下2023-01-01python互斥鎖、加鎖、同步機制、異步通信知識總結(jié)
本篇文章給大家詳細講述了python互斥鎖、加鎖、同步機制、異步通信相關(guān)知識點,對此有興趣的朋友收藏下。2018-02-02python實現(xiàn)視頻讀取和轉(zhuǎn)化圖片
今天小編就為大家分享一篇python實現(xiàn)視頻讀取和轉(zhuǎn)化圖片,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python學習筆記--將python源文件打包成exe文件(pyinstaller)
這篇文章主要介紹了通過將pyinstallerpython源文件打包成exe文件的方法,需要的朋友可以參考下2018-05-05