首頁  >  文章  >  後端開發  >  Python中的時間序列分析實例

Python中的時間序列分析實例

PHPz
PHPz原創
2023-06-10 09:17:591303瀏覽

Python是一門流行的程式語言,其強大的資料處理和視覺化功能使其在資料科學領域中廣泛應用。在時間序列分析方面,Python提供了豐富的工具和函式庫,幫助我們對時間序列資料進行處理和分析。本文將介紹一些Python的時間序列分析實例。

1.資料的取得

在時間序列分析中,最常用的資料型別是時間戳記和日期物件。 Python內建的datetime模組可以方便地處理這類資料。在取得時間序列資料時,我們可以使用Python pandas函式庫提供的資料讀取函數,例如read_csv()、read_excel()、read_sql()。

下面是一個從CSV檔案讀取時間序列資料的範例程式碼:

import pandas as pd
import matplotlib.pyplot as plt

#df = pd .read_csv('data.csv', parse_dates=['Date'], index_col='Date')
print(df.head())

在這個範例中,我們使用了read_csv( )函數讀取CSV文件,並設定parse_dates參數為列表['Date'],從而將資料中的時間戳記轉換為Python的日期物件。另外,我們也指定了index_col參數為'Date',以將日期列作為資料的索引。

2.時間序列的視覺化

Python提供了多種資料視覺化工具,其中最常用的是matplotlib函式庫。我們可以使用matplotlib的plot()函數對時間序列資料進行繪圖,並設定x軸為時間序列。以下是一個範例程式碼:

plt.plot(df.index, df['Value'])
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Time Series')
plt.show()

這段程式碼將時間序列資料df中的時間序列作為x軸,資料列作為y軸,並將圖表的橫縱軸標籤和標題設定好後進行繪製。

3.時間序列的平穩性檢定

在時間序列分析中,通常需要對資料的平穩性進行檢定。平穩時間序列的平均值和變異數不會隨時間變化,這使得我們能夠使用一些穩健的分析方法,例如自迴歸模型(AR)和移動平均模型(MA)。

我們可以使用Python的統計庫statsmodels來完成平穩性檢定。該函式庫提供了adfuller()函數,可以使用Dickey-Fuller檢定方法對時間序列資料的平穩性進行檢驗。以下是一個範例程式碼:

from statsmodels.tsa.stattools import adfuller

result = adfuller(df['Value'])
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
print('Critical Values:')
for key, value in result[4].items( ):
print(' %s: %.3f' % (key, 值))

在本例中,我們使用了df['Value']的值作為需要檢驗的時間序列數據。函數adfuller()傳回了檢定結果和關鍵統計量,我們將其列印出來進行分析。

4.時間序列的季節分解

在時間序列分析中,季節分解是重要的分析方法。我們可以使用Python函式庫statsmodels提供的seasonal_decompose()函數對時間序列資料進行季節性分解。以下是一個範例程式碼:

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(df['Value'], model='multiplicative', period=12)
result.plot()
plt.show()

在本例中,我們將df['Value']的值作為需要分解的時間序列數據,並設定了參數model='multiplicative '和period=12,分別表示使用乘法模型進行分解和每年的周期性發生12個月。最後,將分解結果進行繪圖並展示。

結語

本文介紹了Python用於時間序列分析的一些經典實例,包括資料的獲取、時間序列的可視化、平穩性檢定和季節性分解。以上方法只是Python中時間序列分析的冰山一角,透過不斷學習與實踐,我們可以進一步掌握時間序列分析的各種方法,取得更好的結果。

以上是Python中的時間序列分析實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn