搜尋
首頁後端開發Python教學Python用於時間序列分析:預測和異常檢測

Python用於時間序列分析:預測和異常檢測

Aug 31, 2023 pm 08:09 PM
預測時間序列分析異常檢測

Python用於時間序列分析:預測和異常檢測

Python 已成為資料科學家和分析師的首選語言,提供全面的資料分析庫和工具。尤其是Python在時間序列分析方面表現突出,在預測和異常檢測方面表現出色。憑藉其簡單性、多功能性以及對統計和機器學習技術的強大支持,Python 提供了一個理想的平台,從依賴時間的數據中提取有價值的見解。

本文探討了 Python 在時間序列分析方面的卓越功能,並著重於預測和異常檢測。透過深入研究這些任務的實際方面,我們重點介紹了 Python 的函式庫和工具如何實現精確預測和識別時間序列資料中的異常。透過現實世界的範例和演示性輸出,我們展示了 Python 在應對時間序列分析挑戰方面的效率和實用性。與我們一起踏上 Python 之旅,進行時間序列分析並揭開與時間相關的資料中隱藏的寶藏。

使用 Python 進行預測

預測使我們能夠根據過去的觀察來預測未來的價值。 Python 提供了多個高效能函式庫,例如 NumPy、pandas 和 scikit-learn,有助於時間序列預測。此外,統計模型和 Prophet 等專業庫提供更進階的預測功能。

在預測零售店下個月銷售額的任務中,我們首先將時間序列資料載入到 pandas DataFrame 中並執行必要的準備工作。準備好數據後,我們可以探索移動平均線、指數平滑和 ARIMA 模型等各種預測方法來進行分析和預測。

範例

以下是範例程式碼

#
import pandas as pd
import statsmodels.api as sm

# Load and preprocess the time series data
sales_data = pd.read_csv('sales_data.csv', parse_dates=['Date'])
sales_data.set_index('Date', inplace=True)

# Fit the ARIMA model
model = sm.tsa.ARIMA(sales_data, order=(1, 1, 1))
model_fit = model.fit(disp=0)

# Make predictions
predictions = model_fit.predict(start='2023-07-01', end='2023-08-01', dynamic=False)

在此範例中,我們從 CSV 檔案載入銷售數據,將日期列設為索引,並將 ARIMA(1, 1, 1) 模型擬合到數據。最後,我們對下個月做出預測。

使用 Python 進行異常檢測

異常檢測涉及識別時間序列資料中的異常模式。 Python 提供了多種用於有效異常檢測的技術和函式庫,包括基於移動平均值和標準差的流行方法。

假設我們有一個包含每小時溫度讀數的感測器資料集。我們正在尋找例外情況,例如溫度快速升高或降低。以下是採用移動平均值和標準差策略的程式碼範例

範例

import pandas as pd

# Load the time series data
sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

# Calculate moving averages and standard deviations
window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

# Detect anomalies
anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

在此範例中,我們使用 6 小時的視窗大小來計算溫度測量值的移動平均值和標準差。然後,透過定位明顯偏離移動平均線的數據點,我們能夠發現異常情況。

用於時間序列分析的 Python 視覺化

Python 提供了強大的視覺化函式庫,可以增強我們對時間序列資料的理解,超越預測和異常檢測。視覺化有助於直觀地識別模式、趨勢和異常,從而提高洞察力並做出明智的決策。

讓我們擴展先前的範例,並結合 Python 的視覺化功能來更深入地了解資料。

預測視覺化

使用ARIMA模型進行銷售預測後,我們可以將預期銷售與實際銷售數據一起顯示。使用此視覺化可以輕鬆比較預期數字和實際數字。

範例

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(sales_data.index, sales_data['Sales'], label='Actual Sales')
plt.plot(predictions.index, predictions, color='red', linestyle='--', label='Predicted Sales')
plt.title('Sales Forecasting')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.legend()
plt.show()

在此範例中,利用 matplotlib 函式庫產生線圖,直觀地表示實際銷售資料和預測銷售資料。這種圖形表示使我們能夠評估預測模型的準確性並識別預測值和觀測值之間的任何差異。

異常檢測視覺化

異常檢測視覺化需要建立一個圖表來展示時間序列資料、計算的移動平均值和偵測到的異常。這種視覺表示可以清晰地識別和分析異常數據點。這是一個範例

範例

import pandas as pd
import matplotlib.pyplot as plt

sensor_data = pd.read_csv('sensor_data.csv', parse_dates=['Timestamp'])
sensor_data.set_index('Timestamp', inplace=True)

window_size = 6
rolling_mean = sensor_data['Temperature'].rolling(window=window_size).mean()
rolling_std = sensor_data['Temperature'].rolling(window=window_size).std()

anomalies = sensor_data[(sensor_data['Temperature'] > rolling_mean + 2 * rolling_std) |
                        (sensor_data['Temperature'] < rolling_mean - 2 * rolling_std)]

plt.figure(figsize=(10, 6))
plt.plot(sensor_data.index, sensor_data['Temperature'], label='Temperature')
plt.plot(sensor_data.index, rolling_mean, color='red', linestyle='--', label='Moving Average')
plt.scatter(anomalies.index, anomalies['Temperature'], color='orange', label='Anomalies')
plt.title('Anomaly Detection: Temperature Sensor')
plt.xlabel('Timestamp')
plt.ylabel('Temperature')
plt.legend()
plt.show()

該程式碼範例從 CSV 檔案載入時間序列數據,並將時間戳列設定為索引。然後,它使用特定的視窗大小計算溫度讀數的移動平均值和標準偏差。透過將溫度值與計算的移動平均值和標準差進行比較,可以檢測到異常情況。

結論

總而言之,Python 被證明是時間序列分析的寶貴工具,特別是在預測和異常檢測領域。其廣泛的函式庫(包括 statsmodels、pandas 和 scikit-learn)提供了一個專為處理時間序列資料而客製化的強大生態系統。透過利用這些庫的強大功能,可以建立 ARIMA 等準確的預測模型,並可以使用移動平均值和標準差等技術來識別異常情況。此外,Python 的視覺化函式庫(例如 matplotlib)使用戶能夠創建視覺上引人注目的繪圖,從而加深他們對時間序列資料的理解。無論專業知識水平如何,Python 都為初學者和經驗豐富的資料科學家提供了必要的資源,以發現趨勢、做出精確預測並識別時間序列資料集中的異常。

以上是Python用於時間序列分析:預測和異常檢測的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境