處理過與時間有關的數(shù)據(jù)的人都知道,差分變化經(jīng)常用來使得結(jié)果更加直觀。在這篇文章里將會教你如何用Python來實現(xiàn)這一目的,讀完這篇文章,你將會掌握以下技能:

創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站建設、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的浦東網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
1、知道什么是差分變換以及滯后差分和差分階數(shù)的設置
2、如何手動計算差分
3、怎樣使用Pandas內(nèi)置的差分函數(shù)
所以,讓我們趕緊開始吧!
為什么要對時間序列數(shù)據(jù)進行差分?
首先來看下為什么要對數(shù)據(jù)進行差分變化,差分變化可以消除數(shù)據(jù)對時間的依賴性,也就是降低時間對數(shù)據(jù)的影響,這些影響通常包括數(shù)據(jù)的變化趨勢以及數(shù)據(jù)周期性變化的規(guī)律。進行差分操作時,一般用現(xiàn)在的觀測值減去上個時刻的值就得到差分結(jié)果,就是這么簡單,按照這種定義可以計算一系列的差分變換。
滯后差分
連續(xù)觀測值之間的差分變換叫做一階滯后差分。滯后差分的步長需要根據(jù)數(shù)據(jù)的時間結(jié)構(gòu)做調(diào)整,例如對于周期性變化的數(shù)據(jù),這個時間步長就是數(shù)據(jù)變化的周期。
差分階數(shù)
在進行一次差分之后,時間項的作用并沒有完全去掉,將會繼續(xù)對差分結(jié)果進行差分變化,直到完全消除時間項的影響因素為止,這個過程中進行的差分操作次數(shù)就稱為差分階數(shù)。
洗發(fā)水銷售數(shù)據(jù)
這份數(shù)據(jù)是三年來每月洗發(fā)水的銷售情況,總共有36個數(shù)據(jù)記錄,原始數(shù)據(jù)來自Makridakis, Wheelwright和 Hyndman (1998).,可以從下面的地址下到數(shù)據(jù):
下面的代碼將會導入數(shù)據(jù)并將結(jié)果畫成折線圖,如下所示:
手動差分
在這一部分中,我們將會自定義一個函數(shù)來實現(xiàn)差分變換,這個函數(shù)將會對提供的數(shù)據(jù)進行遍歷并根據(jù)指定的時間間隔進行差分變換。具體代碼如下:
從上面的代碼中可以看到該函數(shù)將會根據(jù)指定的時間間隔來對數(shù)據(jù)進行變換,一般來說,通常會計算間隔一個數(shù)據(jù)的差分,這樣的結(jié)果比較可靠。當然,我們也可以將上面的函數(shù)進行一定的改進,加入差分階數(shù)的指定。
下面將這函數(shù)應用到上面洗發(fā)水銷售的數(shù)據(jù)中去,運行之后繪出下面的圖,具體如下:
自動差分
Pandas庫里提供了一個函數(shù)可以自動計算數(shù)據(jù)的差分,這個函數(shù)是diff(),輸入的數(shù)據(jù)是“series'或”DataFrame'類型的,像前面自定義函數(shù)那樣,我們也可以指定差分的時間間隔,不過在這里這個參數(shù)叫做周期。
下面的例子是用Pandas內(nèi)置函數(shù)來計算差分的,數(shù)據(jù)類型是series的,使用Pandas內(nèi)置函數(shù)的好處是代碼工作量減少了不少,而且繪出的圖中包含更詳細的信息,具體效果如下:
總結(jié)
讀完本文想必你已經(jīng)學會用python來實現(xiàn)對數(shù)據(jù)的差分了,尤其是對差分的概念,手動差分,以及使用Pandas內(nèi)置函數(shù)進行差分都有所了解了。如果有什么好的想法歡迎在評論欄里留下。
基于文本文檔(Markdown) 設想好需要的基本需要的表、字段、類型;
使用 Rails Migration 隨著功能的開發(fā)逐步創(chuàng)建表;
隨著細節(jié)功能的開發(fā)、需求,逐步增加字段,刪除字段,或者調(diào)整字段類型;
第一個 Release 的時候清理 Migrations 合并成一個;
隨著后期的改動,逐步增加、修改、刪除字段或表。
基本上我的所有項目都是這么搞的,這和項目是否復雜無關。
cmp是python的內(nèi)建函數(shù).
cmp(x,y) 用于 compare x 和 y的值.
sort(cmp)只是用于說明,python中函數(shù)也是可以作為參數(shù)傳入其他函數(shù)來進行調(diào)用的,排序的依據(jù)就是cmp.
class Calculator(Exception):
try:
x = input('Enter the first number:')
y = input('Enter the second number:')
print(int(x)/int(y))
except ZeroDivisionError:
print('The second number cannot be Zero')
except ValueError: #int方法拋出的是ValueError,所以使用TypeError是捕獲不到異常的
print('That wasn\'t a number')
執(zhí)行方法:
Python在執(zhí)行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節(jié)碼),然后再由Python Virtual Machine(Python虛擬機)來執(zhí)行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。
然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。
這里的高級并不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。
標題名稱:python差分函數(shù),python差分法
網(wǎng)站路徑:http://chinadenli.net/article2/hcpioc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)建站、定制網(wǎng)站、網(wǎng)站收錄、靜態(tài)網(wǎng)站、品牌網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)