您好,登錄后才能下訂單哦!
本篇內容主要講解“python DataFrame的shift()方法怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python DataFrame的shift()方法怎么使用”吧!
在python數據分析中,可以使用shift()方法對DataFrame對象的數據進行位置的前滯、后滯移動。
DataFrame.shift(periods=1, freq=None, axis=0)
periods可以理解為移動幅度的次數,shift默認一次移動1個單位,也默認移動1次(periods默認為1),則移動的長度為1 * periods。
periods可以是正數,也可以是負數。負數表示前滯,正數表示后滯。
freq是一個可選參數,默認為None,可以設為一個timedelta對象。適用于索引為時間序列數據時。
freq為None時,移動的是其他數據的值,即移動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)))
如圖,索引列的時間序列數據滯后了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)))
如圖,索引列的時間序列數據前滯了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)))
如圖,索引列的時間序列數據滯后了9天(負三乘以負三)
到此,相信大家對“python DataFrame的shift()方法怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。