使用pandas中的DataFrame.rolling方法查看時間序列中的異常值
前言
Pandas是Python中最受歡迎的數(shù)據(jù)分析和處理庫之一,提供了許多強(qiáng)大且靈活的數(shù)據(jù)操作工具。在Pandas中,DataFrame.rolling方法是一個強(qiáng)大的工具,用于執(zhí)行滾動窗口計算,能夠?qū)?shù)據(jù)進(jìn)行平滑處理、計算移動平均值和其他滾動統(tǒng)計量等操作。在本文中,我們將深入探討DataFrame.rolling方法的各種參數(shù)和示例,以幫助您更好地理解和應(yīng)用這個功能。
DataFrame.rolling方法的參數(shù)說明
window參數(shù)
window
參數(shù)用于指定滾動窗口的大小,可以是整數(shù)、時間間隔、字符串、偏移量或BaseIndexer子類。具體如下:
- 整數(shù):固定窗口大小的觀測數(shù)量。
- 時間間隔、字符串、偏移量:每個窗口的時間周期,僅適用于日期時間型索引。
- BaseIndexer子類:基于定義的
get_window_bounds
方法的窗口邊界。
min_periods參數(shù)
min_periods
參數(shù)指定窗口中所需的最小觀測數(shù)量,用于計算結(jié)果值。默認(rèn)為None。
center參數(shù)
center
參數(shù)用于設(shè)置窗口標(biāo)簽的位置。默認(rèn)為False。
- False:將窗口標(biāo)簽設(shè)置為窗口索引的右邊緣。
- True:將窗口標(biāo)簽設(shè)置為窗口索引的中心。
win_type參數(shù)
win_type
參數(shù)用于指定窗口類型,默認(rèn)為None。
- None:所有點均勻加權(quán)。
- 字符串:必須是有效的scipy.signal窗口函數(shù)。
on參數(shù)
on
參數(shù)用于DataFrame,指定在哪個列標(biāo)簽或索引級別上計算滾動窗口,而不是使用DataFrame的索引。
axis參數(shù)
axis
參數(shù)指定滾動操作的軸向,默認(rèn)為0。
- 0或'index':沿行進(jìn)行滾動。
- 1或'columns':沿列進(jìn)行滾動。
closed參數(shù)
closed
參數(shù)指定窗口的閉合方式,默認(rèn)為None('right')。
- 'right':排除窗口中的第一個點。
- 'left':排除窗口中的最后一個點。
- 'both':不包括窗口中的任何點。
- 'neither':排除窗口中的第一個和最后一個點。
step參數(shù)
step
參數(shù)用于在每個步驟處計算窗口結(jié)果,相當(dāng)于切片操作[::step]。在1.5.0版中新增。
method參數(shù)
method
參數(shù)用于指定單列或行('single')或整個對象('table')的滾動操作。在1.3.0版中新增。
返回值
DataFrame.rolling
方法返回一個pandas.api.typing.Window
或pandas.api.typing.Rolling
的實例。
示例
以下是一些DataFrame.rolling
方法的使用示例:
- 使用不同窗口大小進(jìn)行滾動求和。
- 在時間序列數(shù)據(jù)上使用時間間隔進(jìn)行滾動計算。
- 使用不同參數(shù)進(jìn)行滾動操作。
- 在日期列上進(jìn)行滾動計算。
# 示例代碼 import pandas as pd import numpy as np # 創(chuàng)建示例數(shù)據(jù) df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]}) # 滾動求和示例 result = df.rolling(2).sum() print(result)
df.rolling(2).sum() B 0 NaN 1 1.0 2 3.0 3 NaN 4 NaN
- 相當(dāng)于包括自己往前兩個為一個窗口,進(jìn)行sum(),對于第一個因為前面為0所以為Nan,對于第二個數(shù) = 0 + 1 = 1 ,同理第三個數(shù) = 1 + 2 = 3.
在時間序列上的應(yīng)用
介紹:基于時間窗口的滾動求和
在數(shù)據(jù)處理中,經(jīng)常需要對時間序列數(shù)據(jù)執(zhí)行滾動窗口計算以獲取更深層次的見解。Pandas庫中的DataFrame.rolling
方法為我們提供了一種便捷的方式來進(jìn)行此類操作。特別是,在時間序列數(shù)據(jù)中,通過指定時間間隔來計算滾動統(tǒng)計量可以洞察數(shù)據(jù)的趨勢和模式。
讓我們以一個具體的示例來說明:我們有一個包含時間戳索引的DataFrame df_time
,其中的列B
包含了一些數(shù)值數(shù)據(jù)。我們希望對這個數(shù)據(jù)執(zhí)行滾動求和,并且窗口的寬度是2秒。
import pandas as pd import numpy as np # 創(chuàng)建示例數(shù)據(jù) df_time = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]}, index=[pd.Timestamp('20130101 09:00:00'), pd.Timestamp('20130101 09:00:02'), pd.Timestamp('20130101 09:00:03'), pd.Timestamp('20130101 09:00:05'), pd.Timestamp('20130101 09:00:06')]) print(df_time) df_time B 2013-01-01 09:00:00 0.0 2013-01-01 09:00:02 1.0 2013-01-01 09:00:03 2.0 2013-01-01 09:00:05 NaN 2013-01-01 09:00:06 4.0
result = df_time.rolling('2s').sum() print(result) B 2013-01-01 09:00:00 0.0 2013-01-01 09:00:02 1.0 2013-01-01 09:00:03 3.0 2013-01-01 09:00:05 NaN 2013-01-01 09:00:06 4.0
再來一個時間序列查看異常值的例子
# pick a window size window_size = 25  # calculate rolling mean and standard deviation xroll = series['value'].rolling(window_size) series['mean_roll'] = xroll.mean() series['sd_roll'] = xroll.std() # calculate the Z-score series['zscore'] = np.abs( (series['value'] - series['mean_roll']) / series['sd_roll']) series['zscore'].plot()
series.loc[series['zscore'] > 3][['timestamp', 'value']]
以上是DataFrame.rolling
方法的參數(shù)說明和示例,該方法提供了強(qiáng)大的滾動窗口計算功能,可在時間序列和數(shù)據(jù)處理中發(fā)揮重要作用。
到此這篇關(guān)于使用pandas中的DataFrame.rolling方法查看時間序列中的異常值的文章就介紹到這了,更多相關(guān)pandas DataFrame.rolling查看異常值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python利用socket實現(xiàn)客戶端和服務(wù)端之間進(jìn)行通信
這篇文章主要介紹了python實現(xiàn)客戶端和服務(wù)端之間進(jìn)行通信,文章通過python利用socket展開詳情介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05虛擬環(huán)境及venv和virtualenv的區(qū)別說明
這篇文章主要介紹了虛擬環(huán)境及venv和virtualenv的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02pyenv虛擬環(huán)境管理python多版本和軟件庫的方法
這篇文章主要介紹了pyenv虛擬環(huán)境管理python多版本和軟件庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12PyQt5每天必學(xué)之QSplitter實現(xiàn)窗口分隔
這篇文章主要介紹了PyQt5每天必學(xué)之窗口分隔,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04詳解?PyTorch?Lightning模型部署到生產(chǎn)服務(wù)中
這篇文章主要為大家介紹了如何將PyTorch?Lightning模型部署到生產(chǎn)服務(wù)中的詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09python版本坑:md5例子(python2與python3中md5區(qū)別)
這篇文章主要介紹了python版本坑:md5例子(python2與python3中md5區(qū)別),需要的朋友可以參考下2017-06-06Python實現(xiàn)創(chuàng)建快速剪映草稿軌道自動生成視頻
這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)創(chuàng)建快速剪映草稿軌道并自動生成視頻,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-08-08