日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python?DataFrame的shift()方法的使用_python

作者:侯小啾 ? 更新時間: 2022-05-11 編程語言

在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天(負三乘以負三)

在這里插入圖片描述

原文鏈接:https://blog.csdn.net/weixin_48964486/article/details/123346341

欄目分類
最近更新