如何用Python對數據進行差分
Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
處理過與時間有關的數據的人都知道,差分變化經常用來使得結果更加直觀。在這篇文章里將會教你如何用Python來實現這一目的,讀完這篇文章,你將會掌握以下技能:
1、知道什麼是差分變換以及滯後差分和差分階數的設置
2、如何手動計算差分
3、怎樣使用Pandas內置的差分函數
所以,讓我們趕緊開始吧!
為什麼要對時間序列數據進行差分?
首先來看下為什麼要對數據進行差分變化,差分變化可以消除數據對時間的依賴性,也就是降低時間對數據的影響,這些影響通常包括數據的變化趨勢以及數據周期性變化的規律。進行差分操作時,一般用現在的觀測值減去上個時刻的值就得到差分結果,就是這麼簡單,按照這種定義可以計算一系列的差分變換。
滯後差分
連續觀測值之間的差分變換叫做一階滯後差分。滯後差分的步長需要根據數據的時間結構做調整,例如對於周期性變化的數據,這個時間步長就是數據變化的周期。
差分階數
在進行一次差分之後,時間項的作用並沒有完全去掉,將會繼續對差分結果進行差分變化,直到完全消除時間項的影響因素為止,這個過程中進行的差分操作次數就稱為差分階數。
洗髮水銷售數據
這份數據是三年來每月洗髮水的銷售情況,總共有36個數據記錄,原始數據來自Makridakis, Wheelwright和 Hyndman (1998).,可以從下面的地址下到數據:
https://datamarket.com/data/set/22r0/sales-of-shampoo-over-a-three-year-period#!ds=22r0&display=line
下面的代碼將會導入數據並將結果畫成折線圖,如下所示:
手動差分
在這一部分中,我們將會自定義一個函數來實現差分變換,這個函數將會對提供的數據進行遍歷並根據指定的時間間隔進行差分變換。具體代碼如下:
從上面的代碼中可以看到該函數將會根據指定的時間間隔來對數據進行變換,一般來說,通常會計算間隔一個數據的差分,這樣的結果比較可靠。當然,我們也可以將上面的函數進行一定的改進,加入差分階數的指定。
下面將這函數應用到上面洗髮水銷售的數據中去,運行之後繪出下面的圖,具體如下:
自動差分
Pandas庫里提供了一個函數可以自動計算數據的差分,這個函數是diff(),輸入的數據是「series"或」DataFrame"類型的,像前面自定義函數那樣,我們也可以指定差分的時間間隔,不過在這裡這個參數叫做周期。
下面的例子是用Pandas內置函數來計算差分的,數據類型是series的,使用Pandas內置函數的好處是代碼工作量減少了不少,而且繪出的圖中包含更詳細的信息,具體效果如下:
總結
讀完本文想必你已經學會用python來實現對數據的差分了,尤其是對差分的概念,手動差分,以及使用Pandas內置函數進行差分都有所了解了。如果有什麼好的想法歡迎在評論欄里留下。
英文原文:http://machinelearningmastery.com/difference-time-series-dataset-python/
譯者:咋家


※Python 的正則表達式彩蛋
※tomd: 用Python將HTML轉換回Markdown
※每月好書:? 深入淺出深度學習:原理剖析與Python實踐
※Python到底是不是數據分析最好的語言?聽聽這位大神怎麼說...
TAG:Python |
※如何利用Keyshot進行渲染
※如何用Python進行圖像處理
※利用Python進行數據分析之數據規整化
※如何使用Tensorflow對象檢測進行像素級分類?
※如何用ImageJ對條帶進行定量分析?
※Python數據處理實戰——使用Scikit-Learn進行多類文本分類
※使用pdb進行Python調試
※如何使用Ensembl資料庫對基因變異進行分類
※使用Pandas&NumPy進行數據清洗的6大常用方法
※用Python對用戶評論典型意見進行數據挖掘
※如何使用 Python 進行時間序列預測?
※pandas創始人手把手教你利用Python進行數據分析
※使用pdb進行Python調試(下篇)
※使用 Python 進行分散式系統協調
※Python 調用 Micro 宏自動解析 Nmon 文件進行數據歸檔
※使用 VS Code 進行 Python 編程
※如何學習和評價《利用python進行數據分析》這本書?
※linux應用如何進行cpu綁定
※Excel宏如何進行錄製與調用
※用Python進行機器學習