您好,登錄后才能下訂單哦!
函數原型
resample(self, rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention=‘start', kind=None, loffset=None, limit=None, base=0, on=None, level=None)
比較關鍵的是rule,closed,label下面會隨著兩個用法說明
降采樣
對時間數據細粒度增大,可以把每天的數據聚合成一周,可以求和或者均值的方式進行聚合
下面給出列子
times=pd.date_range('20180101',periods=30) ts=pd.Series(np.arange(1,31),index=times) ts 2018-01-01 1 2018-01-02 2 2018-01-03 3 2018-01-04 4 2018-01-05 5 2018-01-06 6 2018-01-07 7 2018-01-08 8 2018-01-09 9 2018-01-10 10 2018-01-11 11 2018-01-12 12 2018-01-13 13 2018-01-14 14 2018-01-15 15 2018-01-16 16 2018-01-17 17 2018-01-18 18 2018-01-19 19 2018-01-20 20 2018-01-21 21 2018-01-22 22 2018-01-23 23 2018-01-24 24 2018-01-25 25 2018-01-26 26 2018-01-27 27 2018-01-28 28 2018-01-29 29 2018-01-30 30 Freq: D, dtype: int32 ts_7d=ts.resample('7D').sum() ts_7d 2018-01-01 28 2018-01-08 77 2018-01-15 126 2018-01-22 175 2018-01-29 59 dtype: int32
我們看看上面代碼,就是先給出一個1-30號的series,l然后聚合成左閉右開的5個區間[1,8),[8,15),[15,22),[22-29),[29-5(下個月)),每個區間的值就為單個區間值之和。由于29號往后只有29號和30號有值,所以只有兩個值
下面我們看看label和closed的功能
ts_7d=ts.resample('7D',closed='right',label='left').sum() ts_7d Out[14]: 2017-12-25 1 2018-01-01 35 2018-01-08 84 2018-01-15 133 2018-01-22 182 2018-01-29 30
上面的代碼,將closed改為了right,區間就變成了左開右閉,那么如果從區間還是(1,8],1就取不到,所以往前取,就是(25,1],(1,8],(8,15],(15,22],(22,29],(29,5]這6個區間
ts_7d=ts.resample('7D',closed='right',label='right').sum() ts_7d Out[15]: 2018-01-01 1 2018-01-08 35 2018-01-15 84 2018-01-22 133 2018-01-29 182 2018-02-05 30 dtype: int32
上面的代碼就可以看出label=right就是指label等于右區間的值,如果label=left就是指label等于左區間的值
重采樣
降低時間的細粒度,對于重采樣,主要是涉及到值的填充。有下面的三種填充方法
不填充。那么對應無值的地方,用NaN代替。對應的方法是asfreq。
用前值填充。用前面的值填充無值的地方。對應的方法是ffill或者pad。
用后值填充。對應的方法是bfill,b代表back。
下面給出代碼看一下
ts_7h_asfreq = ts.resample('7H').asfreq() print(ts_7h_asfreq) ts_7h_ffill = ts.resample('7H').ffill() print(ts_7h_ffill) ts_7h_bfill = ts.resample('7H').bfill() ts_7h_bfill 2018-01-01 00:00:00 1.0 2018-01-01 07:00:00 NaN 2018-01-01 14:00:00 NaN 2018-01-01 21:00:00 NaN Freq: 7H, dtype: float64 2018-01-01 00:00:00 1 2018-01-01 07:00:00 1 2018-01-01 14:00:00 1 2018-01-01 21:00:00 1 Freq: 7H, dtype: int32 Out[24]: 2018-01-01 00:00:00 1 2018-01-01 07:00:00 2 2018-01-01 14:00:00 2 2018-01-01 21:00:00 2 Freq: 7H, dtype: int32
總結
重采樣和降采樣一般用在時間序列里面,合理的使用降低時間維度或者降低時間細粒度多可以成為好的特征。
以上這篇python中resample函數實現重采樣和降采樣代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。