pandas中滑窗rolling的使用


函數原型和參數說明

DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)

window:表示時間窗的大小,注意有兩種形式(int or offset)。如果使用int,則數值表示計算統計量的觀測值的數量即向前幾個數據。如果是offset類型,表示時間窗的大小。

min_periods:最少需要有值的觀測點的數量,對於int類型,默認與window相等。對於offset類型,默認為1。

center:是否使用window的中間值作為label,默認為false。只能在window是int時使用。

例一

df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]})
df.rolling(3, min_periods=1).sum()
df.rolling(3, min_periods=1, center=True).sum()

例二

df = pd.DataFrame({'1': ['A1', 'A2', 'A1', 'A2', 'A2', 'A1', 'A2'],
                  '2': ['B1', 'B1', 'B1', 'B1', 'B1', 'B1', 'B1'],
                  'num': [1,2,1,3,4,2,1]}, 
                 index = [pd.Timestamp('20130101 09:00:00'),
                          pd.Timestamp('20130101 09:00:01'),
                          pd.Timestamp('20130101 09:00:02'),
                          pd.Timestamp('20130101 09:00:03'),
                          pd.Timestamp('20130101 09:00:04'),
                          pd.Timestamp('20130101 09:00:05'),
                          pd.Timestamp('20130101 09:00:06')])
# 首先我們先對groupby進行聚合(如果只有從A->B,那么不用聚合一個rolling就可以)
# 以9:00:04秒為例,由於時間窗是3s,默認的closed是right,所以我們相加04,03,02秒的num,共有4+3+0=7
df.groupby(['1', '2'])['num'].rolling('3s').sum()

參考 CSDN博主「weijian001」原文鏈接:https://blog.csdn.net/wj1066/article/details/78853717


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM