Pandas中shift庫(kù)的具體使用
shift
函數(shù)是Pandas庫(kù)中用于數(shù)據(jù)位移的函數(shù),常用于時(shí)間序列數(shù)據(jù)的處理。通過(guò)shift
函數(shù),我們可以將數(shù)據(jù)向上或向下移動(dòng)指定的周期數(shù)。
基本語(yǔ)法
shift
函數(shù)的基本語(yǔ)法如下:
DataFrame.shift(periods=1, freq=None, axis=0, fill_value=None)
periods
:表示移動(dòng)的周期數(shù),默認(rèn)為1。freq
:表示移動(dòng)的頻率,默認(rèn)為None。axis
:表示移動(dòng)的方向,0表示向下移動(dòng),1表示向右移動(dòng),默認(rèn)為0。fill_value
:表示填充缺失值的值,默認(rèn)為None。
內(nèi)容
原始數(shù)據(jù):
df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45], "Col2": [13, 23, 18, 33, 48], "Col3": [17, 27, 22, 37, 52] }, index=pd.date_range("2020-01-01", "2020-01-05") )
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-01 | 10 | 13 | 17 |
2020-01-02 | 20 | 23 | 27 |
2020-01-03 | 15 | 18 | 22 |
2020-01-04 | 30 | 33 | 37 |
2020-01-05 | 45 | 48 | 52 |
應(yīng)用案例1:向下移動(dòng)數(shù)據(jù)
df.shift(periods=3)
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-01 | NaN | NaN | NaN |
2020-01-02 | NaN | NaN | NaN |
2020-01-03 | NaN | NaN | NaN |
2020-01-04 | 10.0 | 13.0 | 17.0 |
2020-01-05 | 20.0 | 23.0 | 27.0 |
應(yīng)用案例2:向右移動(dòng)數(shù)據(jù)
df.shift(periods=1, axis="columns")
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-01 | NaN | 10.0 | 13.0 |
2020-01-02 | NaN | 20.0 | 23.0 |
2020-01-03 | NaN | 15.0 | 18.0 |
2020-01-04 | NaN | 30.0 | 33.0 |
2020-01-05 | NaN | 45.0 | 48.0 |
應(yīng)用案例3:填充缺失值
df.shift(periods=3, fill_value=0)
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-01 | 0 | 0 | 0 |
2020-01-02 | 0 | 0 | 0 |
2020-01-03 | 0 | 0 | 0 |
2020-01-04 | 10.0 | 13.0 | 17.0 |
2020-01-05 | 20.0 | 23.0 | 27.0 |
應(yīng)用案例4:按照頻率移動(dòng)數(shù)據(jù)
df.shift(periods=3, freq="D")
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-04 | 10.0 | 13.0 | 17.0 |
2020-01-05 | 20.0 | 23.0 | 27.0 |
2020-01-06 | 15.0 | 18.0 | 22.0 |
2020-01-07 | 30.0 | 33.0 | 37.0 |
2020-01-08 | 45.0 | 48.0 | 52.0 |
應(yīng)用案例5:按照推斷的頻率移動(dòng)數(shù)據(jù)
df.shift(periods=3, freq="infer")
輸出:
Col1 | Col2 | Col3 | |
---|---|---|---|
2020-01-04 | 10.0 | 13.0 | 17.0 |
2020-01-05 | 20.0 | 23.0 | 27.0 |
2020-01-06 | 15.0 | 18.0 | 22.0 |
2020-01-07 | 30.0 | 33.0 | 37.0 |
2020-01-08 | 45.0 | 48.0 | 52.0 |
應(yīng)用案例6:按照指定的周期數(shù)列表移動(dòng)數(shù)據(jù)
df['Col1'].shift(periods=[0, 1, 2])
輸出:
Col1_0 | Col1_1 | Col1_2 | |
---|---|---|---|
2020-01-01 | 10.0 | NaN | NaN |
2020-01-02 | 20.0 | 10.0 | NaN |
2020-01-03 | 15.0 | 20.0 | 10.0 |
2020-01-04 | 30.0 | 15.0 | 20.0 |
2020-01-05 | 45.0 | 30.0 | 15.0 |
在這個(gè)案例中,我們使用了shift
函數(shù)對(duì)一個(gè)特定的列Col1
進(jìn)行了操作,并且傳遞了一個(gè)周期數(shù)列表[0, 1, 2]
。這意味著我們會(huì)得到三列新的數(shù)據(jù),分別表示原始數(shù)據(jù)列Col1
在不同周期數(shù)位移后的結(jié)果。例如,Col1_1
是Col1
向上移動(dòng)1個(gè)周期后的數(shù)據(jù),Col1_2
是Col1
向上移動(dòng)2個(gè)周期后的數(shù)據(jù),以此類推。這樣,我們可以一次性得到多個(gè)位移后的數(shù)據(jù)版本,這在某些分析場(chǎng)景中非常有用。
到此這篇關(guān)于Pandas中shift庫(kù)的具體使用的文章就介紹到這了,更多相關(guān)Pandas shift內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- pandas滑動(dòng)窗口學(xué)習(xí)筆記(shift, diff, pct_change)
- Python pandas中的shift位移操作方法
- Python Pandas中的shift()函數(shù)實(shí)現(xiàn)數(shù)據(jù)完美平移應(yīng)用場(chǎng)景探究
- Pandas自定義shift與DataFrame求差集的小技巧
- pandas DataFrame.shift()函數(shù)的具體使用
- Pandas Shift函數(shù)的基礎(chǔ)入門(mén)學(xué)習(xí)筆記
- 淺談pandas中shift和diff函數(shù)關(guān)系
相關(guān)文章
Python實(shí)現(xiàn)打磚塊小游戲代碼實(shí)例
這篇文章主要介紹了Python打磚塊小游戲,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Python結(jié)合Redis開(kāi)發(fā)一個(gè)消息訂閱系統(tǒng)
消息訂閱是一種常見(jiàn)的通信模式,用于實(shí)現(xiàn)系統(tǒng)之間的解耦和異步通信,本文將詳細(xì)介紹如何使用Python實(shí)現(xiàn)一個(gè)高效與可靠的消息訂閱系統(tǒng),有需要的可以了解下2025-03-03pycharm實(shí)現(xiàn)設(shè)置自動(dòng)的參數(shù)注釋標(biāo)識(shí)
這篇文章主要介紹了pycharm實(shí)現(xiàn)設(shè)置自動(dòng)的參數(shù)注釋標(biāo)識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02python爬蟲(chóng)實(shí)戰(zhàn)之最簡(jiǎn)單的網(wǎng)頁(yè)爬蟲(chóng)教程
在我們?nèi)粘I暇W(wǎng)瀏覽網(wǎng)頁(yè)的時(shí)候,經(jīng)常會(huì)看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來(lái)做桌面壁紙,或者用來(lái)做設(shè)計(jì)的素材。下面這篇文章就來(lái)給大家介紹了關(guān)于利用python實(shí)現(xiàn)最簡(jiǎn)單的網(wǎng)頁(yè)爬蟲(chóng)的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08Python如何使用隊(duì)列方式實(shí)現(xiàn)多線程爬蟲(chóng)
這篇文章主要介紹了Python如何使用隊(duì)列方式實(shí)現(xiàn)多線程爬蟲(chóng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Python輕松寫(xiě)個(gè)課堂隨機(jī)點(diǎn)名系統(tǒng)
現(xiàn)在的學(xué)生大部分都很積極,會(huì)主動(dòng)舉手回答問(wèn)題。但是,也會(huì)遇到一些不好的情況,比如年級(jí)越高主動(dòng)舉手的人越少,所以本文寫(xiě)了一個(gè)隨機(jī)的學(xué)生點(diǎn)名系統(tǒng)可以幫老師解決這些問(wèn)題2023-01-01python實(shí)現(xiàn)猜數(shù)游戲(保存游戲記錄)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜數(shù)游戲,保存游戲記錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06python用ConfigObj讀寫(xiě)配置文件的實(shí)現(xiàn)代碼
發(fā)現(xiàn)一個(gè)簡(jiǎn)單而又強(qiáng)大的讀寫(xiě)配置文件的lib,個(gè)人覺(jué)得最大的亮點(diǎn)在于自帶的格式校驗(yàn)功能,并且支持復(fù)雜的嵌套格式,而且使用起來(lái)也相當(dāng)?shù)暮?jiǎn)便2013-03-03