(14)Python初入坑之時間序列重採樣

時間序列的重採樣是指的,從一個頻率到另一個頻率:降採樣,升採樣,採樣時間點變化。降採樣就是比如之前是每天的頻率到每月的頻率,升採樣例如每月的頻率到每天,採樣時間點變化例如之前是每周五採樣,現在需要改成每周三。

重採樣

首先我們定義一個時間序列的Series。

現在的這個時間序列Series是按照天進行採樣的,一共有60天。那如果我們要改成按照月份進行採樣的呢?我們需要使用resample()進行重採樣。

我們分月份進行採樣,然後求月內的均值。事實上重採樣,就相當於groupby,只不過是根據月份這個period進行分組。默認情況下,這樣的分組,右邊是包含的,即 ] 。也就是左開右閉,( ] 。如果我們要寫成左閉右開,添加參數 closed=left 即可。

下面介紹一下OHLC重採樣,這是在金融股票之中常用到的重採樣,包括open開盤價,high最高價,low最低價,close收盤價。

這樣我們可以看到10月份,最開始和結尾的數據,以及最大和最小的數據。

之前我們講到resample其實就是另一種形式的groupby,那下面我們就使用groupby來給時間序列分組,看怎麼操作。

上面是先把x中的month或者week提取出來,再根據其分組,就均值。就會返回一年中第幾個月或者第幾個星期的均值。

升採樣和插值

首先我們定義一個dataframe。2行4列,行索引是時間序列,頻率為周。

下面我們想重採樣為以天為頻率。需要使用resample和asfreq() ,asfreq可以把dataframe中的數據視同為時間序列進行處理。

或者直接使用asfreq來改變其頻率。但是asfreq不如resample的功能和範圍強大。

以上沒有指定數據的部分,都被自動填充為NaN值,那如果我們需要用特定的值來填充呢?例如,使用空值之前的數據進行填充,這個時候就需要用到pad() 。

也可以使用空值後面的值進行填充,這個時候需要使用bfill() 。

讀取為時間序列

如果有一個dateframe,其中有一列是字元型的時間,我們如何把它讀取成時間序列呢?例如我們以空難數據為例。

空難數據中有一列是date,我們要把這列設置為索引,並且解析為時間序列。則使用parse_dates=True。解析成為時間序列。下面我們就可以根據時間,對某些列進行重採樣了。

例如我們想知道每年的遇難總人數,那就根據Fatalities進行重採樣,頻率為年,就是A,然後進行求和。

這節內容到此結束~


推薦閱讀:

Tableau集成Python機器學習實踐(下)
猴子第三講實踐筆記—對航班計劃數據的處理
如何用sklearn機器學習,來預測泰坦尼克號生存概率?
【案例詳解】連鎖門店如何實現數字化管理?
不算從零開始的數據分析

TAG:數據分析 | Python入門 | pandas包 |