更新時間:2022年12月09日10時34分 來源:傳智教育 瀏覽次數(shù):
降采樣時間顆粒會變大,比如原來是按天統(tǒng)計的數(shù)據(jù),現(xiàn)在要變成按周統(tǒng)計。降采樣時數(shù)據(jù)量是減少的,為了避免有些時間戳對應的數(shù)據(jù)閑置,可以利用內(nèi)置方法(比如sum、mean等)聚合數(shù)據(jù)。
在金融領(lǐng)域中,股票數(shù)據(jù)比較常見的是OHLC重采樣,包括開盤價(open)、最高價(high)、最低價(low)和收盤價(close)。為此,Pandas中專門提供了一個ohlc()方法,示例代碼如下。
In [46]: date_index=pd.date_range('2018/06/01', periods=30) shares_data=np.random.rand(30) time_ser=pd.Series(shares_data,index=date_index) time_ser Out[46]: 2018-06-01 0.217872 2018-06-02 0.392067 2018-06-03 0.127837 2018-06-05 0.078589 ...省略N行... 2018-06-25 0.468722 2018-06-26 0.266006 2018-06-27 0.630626 2018-06-28 0.690746 2018-06-29 0.840611 2018-06-30 0.969173 Freq:D, dtype: float64 In [47]: time_ser.resample('7D').ohlc() # OHLC重采樣 Out[47]: 2018-06-01 0.207359 0.817076 0.207359 0.817076 2018-06-08 0.348861 0.917179 0.243257 0.744128 2018-06-15 0.698345 0.698345 0.240547 0.418569 2018-06-22 0.203373 0.891738 0.111924 0.344488 2018-06-29 0.935986 0.935986 0.920508 0.920508
上述示例輸出了2018年6月份每周的開盤價、最高價、最低價、收盤價。注意,這些股票數(shù)據(jù)都是隨機數(shù),只供大家學習使用,并不是真實的數(shù)據(jù)。
重采樣就相當于另外一種形式的分組操作,它會按照日期將時間序列進行分組,之后對每個分組應用聚合方法得出一個結(jié)果,同樣實現(xiàn)了對時間序列數(shù)據(jù)降采樣的效果,示例代碼如下。
In [48]: # 通過groupby技術(shù)實現(xiàn)降采樣 time_ser.groupby(lambda X: x.week).mean() Out[48]: 22 0.358104 23 0.366116 24 0.486968 25 0.484954 26 0.664579 dtype: float64