python時間序列分析之_用pandas中的rolling函數計算時間窗口數據

2020-12-07 python萬

簡介

由於系統編輯器限制,代碼行用無序列表表示。

上篇文章中,我們講解了如何對時間數據進行重採樣及重採樣中降採樣和升採樣的概覽和使用方法,通過重採樣我們可以得到任何想要頻率的數據,但是這些數據也是一個時點的數據,那麼就存在這樣一個問題:時點的數據波動較大,某一點的數據不能很好的表現它本身的特性,於是我們就想,能否用一個區間的的數據去表現呢,這樣數據的準確性是不是更好一些呢?因此,引出滑動窗口(移動窗口)的概念,簡單點說,為了提升數據的可靠性,將某個點的取值擴大到包含這個點的一段區間,用區間來進行判斷,這個區間就是窗口。如下面的示意圖所示,其中時間序列數據代表的是15日每日的溫度,現在我們以3天為一個窗口,將這個窗口從左至右依次滑動,統計出3天的平均值作為這個點的值,比如3號的溫度就是1號、2號、3號的平均溫度,通過示意圖我們已經理解了滑動窗口,下面我們就看看pandas中使用的函數及各參數的含義。

滑動窗口示意圖

pandas.DataFrame.rolling參數詳解

pandas中提供了pandas.DataFrame.rolling這個函數來實現滑動窗口值計算,下面是這個函數的原型:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None),參數含義如下圖:

rolling參數詳解

用法代碼演示

上面我們介紹了滑動窗口的概念及實現函數的參數,下面我們通過代碼演示,依次展示各參數的作用。

import matplotlib.pylab as pltimport numpy as npimport pandas as pdindex=pd.date_range('20190116','20190130')data=[4,8,6,5,9,1,4,5,2,4,6,7,9,13,6]ser_data=pd.Series(data,index=index)

數據預覽

ser_data.rolling(3).mean()

window=3

如上圖所示,當窗口開始滑動時,第一個時間點和第二個時間點的時間為空,這是因為這裡窗口長度為3,他們前面的數都不夠3,所以到2019-01-18時,他的數據就是2019-01-16到2019-01-18三天的均值。那麼有人就會這樣想,在計算2019-01-16序列的窗口數據時,雖然不夠窗口長度3,但是至少有當天的數據,那麼能否就用當天的數據代表窗口數據呢?答案是肯定的,這裡我們可以通過min_periods參數控制,表示窗口最少包含的觀測值,小於這個值的窗口長度顯示為空,等於和大於時有值,如下所示:

#表示窗口最少包含的觀測值為1ser_data.rolling(3,min_periods=1).mean()

min_periods=1

上面講解了兩個常用的參數,下面我們通過繪圖來觀察原始序列與滑動窗口產生的序列值的關係圖,如下:

index=pd.date_range('20190116','20190216') np.random.seed(2)data=np.random.randint(20,size=len(index))ser_data=pd.Series(data,index=index) plt.figure(figsize=(15, 5)) ser_data.plot(style='r--') ser_data.rolling(3).mean().plot(style='b')

紅色是原始序列折線圖,藍色是窗口平均

可以從上面的圖中看到通過窗口取的值比原始序列數據更加平穩,這也是為何使用滑動窗口的原因。下節講解時間序列分析中的平穩性和差分法,偏理論,喜歡的小夥伴關注收藏!

相關焦點

  • 使用Pandas的resample函數處理時間序列數據的技巧
    時間序列數據在數據科學項目中很常見。 通常,可能會對將時序數據重新採樣到要分析數據的頻率或從數據中汲取更多見解的頻率感興趣。在本文中,我們將介紹一些使用Pandas resample()函數對時間序列數據進行重採樣的示例。 我們將介紹以下常見問題,並應幫助您開始使用時序數據操作。
  • Pandas處理時間序列數據的20個關鍵知識點
    舉幾個例子:一段時間內的股票價格每天,每周,每月的銷售額流程中的周期性度量一段時間內的電力或天然氣消耗率在這篇文章中,我將列出20個要點,幫助你全面理解如何用Pandas處理時間序列數據。1.不同形式的時間序列數據時間序列數據可以是特定日期、持續時間或固定的自定義間隔的形式。時間戳可以是給定日期的一天或一秒,具體取決於精度。
  • Python中的時間序列數據可視化的完整指南
    時間序列數據在許多不同的行業中都非常重要。它在研究、金融行業、製藥、社交媒體、網絡服務等領域尤為重要。對時間序列數據的分析也變得越來越重要。在分析中有什麼比一些好的可視化效果更好呢?沒有一些視覺效果,任何類型的數據分析都是不完整的。因為一個好的情節比20頁的報告更能讓你理解。因此,本文是關於時間序列數據可視化的。
  • 懂Excel輕鬆入門Python數據分析包pandas(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    變量的計算和輸入輸出 08 變量的命名 09 if判斷語句 10 石頭剪刀布 11 while循環基本使用 12循環嵌套 13 函數的基本使用 14 函數的參數和返回值 15函數的嵌套調用 16模塊的簡介 17列表 18元祖 19字典
  • 懂Excel就能輕鬆入門Python數據分析包pandas(七):分列
    經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。後來才發現,原來不是 Python 數據處理厲害,而是他有數據分析神器—— pandas前言今天從兩個需求來看看數據分列功能,由於 Excel 自帶功能比較弱,在處理稍微複雜的需求時會顯得力不從心,因此,本系列文章將引入 Excel 中一個非常高效的數據處理插件—— Power Query,並且看看 pandas 是怎樣靈活解決。
  • python時間序列:日期和時間數據
    前言時間序列(time series)數據都是一種重要的結構化數據形式。時間序列數據的意義取決於具體應用場景,主要有一下幾種:時間戳(timestamp),特定的時刻。固定時期(period),如2007年1月或2010年全年。時間間隔(interval),由起始和結束時間戳表示。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    數據科學愛好者 Parul Pandey 在近日發表了一篇博文,分享了在數據科學中非常實用的 10 個小技巧。雷鋒網 AI 科技評論將他的文章編譯整理如下。有時候,一點小小的黑客行為可以節省時間,挽救生命。一個小小的快捷方式或附加組件有時會被證明是天賜之物,並且可以真正提高生產力。所以,下面是我最喜歡的一些技巧,我以本文的形式一起使用和編譯它們。
  • 20個Pandas函數詳解
    Pandas是一個python數據分析庫。它提供了許多函數和方法來加快數據分析過程。pandas之所以如此普遍,是因為它具有強大的功能,以及他簡單的語法和靈活性。在這篇文章中,我將舉例來解釋20個常用的pandas函數。有些是很常見的,我敢肯定你以前用過。有些對你來說可能是新的。所有函數都將為你的數據分析過程增加價值。
  • 零基礎入門Excel數據分析「函數篇」:8個常用的時間序列類函數
    在數據分析中,日期時間類型的數據很常見,所以Excel中有專門的函數用於處理日期時間類型的數據,這些函數被歸為時間序列類。1、yearyear可以提取日期中的年份,例如,給定日期:2019/11/26,要獲取其中的年份,用year函數即可,如下圖所示。
  • 如何通過一頓飯來說明NumPy與pandas的功用
    談到數據分析,則離不開談及R語言及R語言與Python在數據分析領域孰優孰劣之爭。首先R語言作為正統統計學軟體,數據分析則是其應有之義,因而相比於Python這個在數據分析領域的新起之秀,R語言算是與Matlab、SAS在同一起跑線上。後發優勢畢竟是可觀的,當Python開始涉足數據分析領域時,其便漸漸形成了與R語言分庭抗禮的趨勢。
  • Python學習120課 pandas簡介kaggle下載數據及pandas讀取外部數據
    【每天幾分鐘,從零入門python編程的世界!】numpy的基本的東西我們學習差不多了,後面具體應用中遇到問題具體分析,然後去深入了解遇到的新的知識點就行。現在我們開始學習pandas,pandas一般用的更多,pandas是基於numpy去寫的。pandas是一個專門做數據結構和數據分析的庫。
  • Pandas自動進行探索性數據分析,節省可視化和理解數據的時間
    根據Wikipedia的說法,探索性數據分析(EDA)是一種分析數據集以總結其主要特徵的方法,通常使用視覺方法。因此,EDA是理解基礎數據,變量分布及其相關性的過程。這使得EDA成為構建任何統計模型之前任何數據科學過程中的第一步。
  • 快速介紹Python數據分析庫pandas的基礎知識和代碼示例
    我創建了這個pandas函數的備忘單。這不是一個全面的列表,但包含了我在構建機器學習模型中最常用的函數。讓我們開始吧!在本例中,將新行初始化為python字典,並使用append()方法將該行追加到DataFrame。在向append()添加python字典類型時,請確保傳遞ignore_index=True,以便索引值不會被使用。生成的軸將被標記為編號series0,1,…, n-1,當連接的數據使用自動索引信息時,這很有用。
  • 想成為高效數據科學家?不會Pandas怎麼行
    選自 towardsdatascience作者:Félix Revert機器之心編譯參與:Nurhachu Null、張倩Pandas 是為了解決數據分析任務而創建的一種基於 NumPy 的工具包,囊括了許多其他工具包的功能,具有易用、直觀、快速等優點。
  • 加速數據分析,這12種高效Numpy和Pandas函數為你保駕護航
    選自TowardsDataScience作者:Kunal Dhariwal機器之心編譯參與:Jamin、杜偉、張倩我們都知道,Numpy 是 Python 環境下的擴展程序庫,支持大量的維度數組和矩陣運算;Pandas 也是 Python 環境下的數據操作和分析軟體包,以及強大的數據分析庫。
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    在做時間序列分析時,我們經常要對時間序列進行平穩性檢驗,而我們常用的軟體是SPSS或SAS,但實際上python也可以用來做平穩性檢驗,而且效果也非常好,今天筆者就講解一下如何用python來做時間序列的平穩性檢驗。首先我們還是來簡單介紹一下平穩性檢驗的相關概念。圖1.
  • 懂Excel也能輕鬆入門Python數據分析包pandas(二):高級篩選(上)
    更多 Python 數據處理的乾貨,敬請關注!!!!系列文章:懂Excel就能輕鬆入門Python數據分析包pandas(一):篩選功能前言經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 利用深度學習進行時間序列預測
    下面的函數允許我們從點列表中計算移動平均值,方法計算點的平均值和標準差的數字。def moving_mean(time, flux, lag=5): ''' 該函數通過設定平均值,使數據去噪,減少數據量。