pandas實(shí)現(xiàn)滑動(dòng)窗口的示例代碼
介紹
窗口函數(shù)(Window Function)是一種在關(guān)系型數(shù)據(jù)庫(kù)中使用的函數(shù),通常用于計(jì)算某個(gè)范圍內(nèi)的數(shù)據(jù)。在數(shù)據(jù)分析中,窗口函數(shù)也是一種非常有用的工具,可以輕松地對(duì)數(shù)據(jù)進(jìn)行滑動(dòng)窗口處理,計(jì)算移動(dòng)平均值、移動(dòng)總和等等。
在本文中,我們將使用pandas庫(kù)來(lái)實(shí)現(xiàn)窗口函數(shù)。pandas是一種流行的數(shù)據(jù)處理庫(kù),它提供了許多用于數(shù)據(jù)處理和分析的工具,其中包括窗口函數(shù)。
示例數(shù)據(jù)
為了演示窗口函數(shù)的使用,我們將使用一個(gè)示例數(shù)據(jù)集,其中包含每月的銷售數(shù)據(jù)。
import pandas as pd
data = {'Month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
'Sales': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]}
df = pd.DataFrame(data)
df Month Sales 0 Jan 10 1 Feb 20 2 Mar 30 3 Apr 40 4 May 50 5 Jun 60 6 Jul 70 7 Aug 80 8 Sep 90 9 Oct 100 10 Nov 110 11 Dec 120
移動(dòng)平均值
移動(dòng)平均值是一種常見(jiàn)的窗口函數(shù),用于計(jì)算一段時(shí)間內(nèi)的平均值。在pandas中,我們可以使用rolling函數(shù)來(lái)計(jì)算移動(dòng)平均值。
df['MA'] = df['Sales'].rolling(window=3).mean()
在上面的代碼中,我們使用了rolling函數(shù),并將窗口大小設(shè)置為3,即計(jì)算每三個(gè)月的平均值。計(jì)算出的結(jié)果將存儲(chǔ)在一個(gè)名為“MA”的新列中。
移動(dòng)總和
移動(dòng)總和是另一種常見(jiàn)的窗口函數(shù),用于計(jì)算一段時(shí)間內(nèi)的總和。在pandas中,我們可以使用rolling函數(shù)來(lái)計(jì)算移動(dòng)總和。
df['MS'] = df['Sales'].rolling(window=3).sum()
在上面的代碼中,我們使用了rolling函數(shù),并將窗口大小設(shè)置為3,即計(jì)算每三個(gè)月的總和。計(jì)算出的結(jié)果將存儲(chǔ)在一個(gè)名為“MS”的新列中。
df['MA'] = df['Sales'].rolling(window=3).mean() ... df Month Sales MA 0 Jan 10 NaN 1 Feb 20 NaN 2 Mar 30 20.0 3 Apr 40 30.0 4 May 50 40.0 5 Jun 60 50.0 6 Jul 70 60.0 7 Aug 80 70.0 8 Sep 90 80.0 9 Oct 100 90.0 10 Nov 110 100.0 11 Dec 120 110.0
最大值和最小值
除了移動(dòng)平均值和移動(dòng)總和之外,我們還可以使用rolling函數(shù)來(lái)計(jì)算一段時(shí)間內(nèi)的最大值和最小值。
df['Max'] = df['Sales'].rolling(window=3).max() df['Min'] = df['Sales'].rolling(window=3).min()
在上面的代碼中,我們使用了rolling函數(shù),并將窗口大小設(shè)置為3,分別計(jì)算了最大值和最小值。計(jì)算出的結(jié)果將存儲(chǔ)在名為“Max”和“Min”的新列中。
df Month Sales MA Max Min Sum 0 Jan 10 NaN NaN NaN NaN 1 Feb 20 NaN NaN NaN NaN 2 Mar 30 20.0 30.0 10.0 60.0 3 Apr 40 30.0 40.0 20.0 90.0 4 May 50 40.0 50.0 30.0 120.0 5 Jun 60 50.0 60.0 40.0 150.0 6 Jul 70 60.0 70.0 50.0 180.0 7 Aug 80 70.0 80.0 60.0 210.0 8 Sep 90 80.0 90.0 70.0 240.0 9 Oct 100 90.0 100.0 80.0 270.0 10 Nov 110 100.0 110.0 90.0 300.0 11 Dec 120 110.0 120.0 100.0 330.0
結(jié)論
在本文中,我們介紹了使用pandas庫(kù)來(lái)實(shí)現(xiàn)窗口函數(shù)。我們演示了如何使用rolling函數(shù)來(lái)計(jì)算移動(dòng)平均值、移動(dòng)總和、最大值和最小值。
到此這篇關(guān)于pandas實(shí)現(xiàn)滑動(dòng)窗口的示例代碼的文章就介紹到這了,更多相關(guān)pandas 滑動(dòng)窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python使用scrapy發(fā)送post請(qǐng)求的坑
這篇文章主要介紹了使用scrapy發(fā)送post請(qǐng)求的坑,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
使用python serial 獲取所有的串口名稱的實(shí)例
今天小編就為大家分享一篇使用python serial 獲取所有的串口名稱的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python 實(shí)現(xiàn)域名解析為ip的方法
今天小編就為大家分享一篇Python 實(shí)現(xiàn)域名解析為ip的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
Python學(xué)習(xí)之列表常用方法總結(jié)
這篇文章主要為大家介紹了Python中列表的幾個(gè)常用方法總結(jié),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python列表有一定幫助,需要的可以參考一下2022-03-03
高質(zhì)量Python代碼編寫(xiě)的5個(gè)優(yōu)化技巧
這篇文章主要為大家詳細(xì)介紹了編寫(xiě)高質(zhì)量Python代碼的5個(gè)優(yōu)化技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Python?使用?pip?安裝?matplotlib?模塊的方法
matplotlib是python中強(qiáng)大的畫(huà)圖模塊,這篇文章主要介紹了Python?使用?pip?安裝?matplotlib?模塊(秒解版),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

