pandas rolling()根據時間窗口計算滾動(時間序列有關)


這個函數的主要作用是根據時間(天,月,季度,年等)去看看數據的變化趨勢,是下降了還是上升了,最后還要分析趨勢的原因,結合業務邏輯去分析

可以根據某個時間周期,計算數據的變化,主要用於時間序列上面

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

參數說明:

window:int, offset, or BaseIndexer subclass,就是時間周期參數(窗口),數值型,如果是這個BaseIndexer ,比較少見,暫時不管;

min_periods:int, default None,窗口中具有值的最小觀察數(否則結果為NA)。對於由偏移量指定的窗口, min_periods將默認為1。否則,min_periods將默認為窗口的大小

center:bool, default False,將標簽設置在窗口的中央

win_type:str, default None,提供一個窗口類型。如果為None,則所有點均加權。有關更多信息,請參見下面的注釋

on:str, optional,對於DataFrame,是類似於日期時間的列或MultiIndex級別,在該列或MultiIndex級別上計算滾動窗口,而不是DataFrame的索引。由於不使用整數索引來計算滾動窗口,因此忽略提供的整數列並將其從結果中排除

axis:int or str, default 0,行或者列,默認是計算每列

closed:str, default None,使間隔在“右”,“左”,“兩個”或“兩個都不”端點上關閉。對於基於偏移的窗口,默認為“ right”。對於固定窗口,默認為“兩個”。其余情況未針對固定窗口實施,就是開區間或者閉區間

官網:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html?highlight=rolling#pandas.DataFrame.rolling

注意:

1.上面說了這么多參數,最終的是window參數,其余的不必細看

2.這個函數一般配合聚合函數(sum,mean等)是使用

3.比如說df[col].rolling(3).sum(),就是計算連續三個值(當前這個+前面兩個)的和

import pandas as pd  
# 導入 pandas 
import numpy as np
index = pd.date_range('2019-01-01',periods=20)  
#創建日期序列
 
data = pd.DataFrame(np.arange(len(index)),index=index,columns=['test'])
#創建簡單的pd.DataFrame
 
data
#打印data
data['sum'] = data.test.rolling(3).sum() #移動3個值,進行求和
data['mean'] = data.test.rolling(3).mean() #移動3個值,進行求平均數
data['mean1'] = data.test.rolling(3,min_periods=2).mean()
#移動3個值,最小計數為2,進行求平均數,查看跟上面有何不同

我們看看最后的data

 

 

最后可將結果配合plot可視化出來

import matplotlib.pyplot as plt 
plt.plot(data)  #只是簡單畫圖,不做復雜的處理

 


免責聲明!

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



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