使用Python進(jìn)行時(shí)間序列分析的8種繪圖類型
時(shí)間序列數(shù)據(jù)
時(shí)間序列數(shù)據(jù)是按時(shí)間順序按固定時(shí)間間隔排列的觀測(cè)值的集合。每個(gè)觀察對(duì)應(yīng)于一個(gè)特定的時(shí)間點(diǎn),并且可以以各種頻率(例如,每天、每月、每年)記錄數(shù)據(jù)。此類數(shù)據(jù)在許多領(lǐng)域都非常重要,包括金融、經(jīng)濟(jì)、氣候科學(xué)等,因?yàn)樗兄谕ㄟ^(guò)分析時(shí)間序列數(shù)據(jù)來(lái)掌握潛在模式、發(fā)現(xiàn)趨勢(shì)和發(fā)現(xiàn)季節(jié)性波動(dòng)。
什么是時(shí)間序列分析?
評(píng)估時(shí)間序列數(shù)據(jù)以確定相關(guān)統(tǒng)計(jì)數(shù)據(jù)和其他數(shù)據(jù)屬性的技術(shù)稱為時(shí)間序列分析。任何具有重復(fù)模式的時(shí)間序列,包括金融市場(chǎng)、天氣和社交媒體統(tǒng)計(jì)數(shù)據(jù),都可能受到影響。時(shí)間序列分析的主要目標(biāo)是研究有關(guān)市場(chǎng)趨勢(shì)和經(jīng)濟(jì)周期的關(guān)鍵思想。
可視化在從時(shí)間序列數(shù)據(jù)中獲取有洞察力的信息的過(guò)程中至關(guān)重要,使我們能夠理解復(fù)雜的關(guān)系并做出明智的決策。
本文介紹了幾種類型的繪圖,可幫助您使用 Python 進(jìn)行時(shí)間序列分析,并提供使用可免費(fèi)訪問(wèn)的數(shù)據(jù)集的詳細(xì)示例。
數(shù)據(jù)集描述
數(shù)據(jù)集:太陽(yáng)黑子數(shù)據(jù)集
什么是太陽(yáng)黑子?
太陽(yáng)黑子是太陽(yáng)表面的區(qū)域,稱為光球?qū)?,此處磁?chǎng)集中,導(dǎo)致表面溫度低于周圍環(huán)境。太陽(yáng)復(fù)雜的磁活動(dòng)是產(chǎn)生這些黑色區(qū)域的原因。
太陽(yáng)黑子的觀測(cè)和記錄已有多年,其中一些最早的記錄來(lái)自古代文明。他們的研究極大地有助于了解太陽(yáng)行為、太空天氣及其對(duì)地球氣候和通信系統(tǒng)可能產(chǎn)生的影響??茖W(xué)家仍在研究太陽(yáng)黑子,以更多地了解太陽(yáng)磁場(chǎng)的動(dòng)態(tài)及其如何影響我們的太陽(yáng)系。
數(shù)據(jù)集變量:數(shù)據(jù)集由 2 列組成 - 從 1749 年到 1983 年的“月份”和“太陽(yáng)黑子”。它基本上描述了該數(shù)據(jù)集中記錄的每個(gè)月在太陽(yáng)上看到的太陽(yáng)黑子的數(shù)量。
現(xiàn)在讓我們開始編碼吧!
導(dǎo)入必要的庫(kù)
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from statsmodels.graphics.tsaplots import plot_acf from statsmodels.graphics.tsaplots import plot_pacf
導(dǎo)入數(shù)據(jù)集
# 加載每月太陽(yáng)黑子數(shù)據(jù)集 url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv" data = pd.read_csv(url, parse_dates=['Month'], index_col='Month') print(data)
輸出:
Sunspots
Month
1749-01-01 58.0
1749-02-01 62.6
1749-03-01 70.0
1749-04-01 55.7
1749-05-01 85.0
... ...
1983-08-01 71.8
1983-09-01 50.3
1983-10-01 55.8
1983-11-01 33.3
1983-12-01 33.4
[2820 rows x 1 columns]
現(xiàn)在,我們可以開始了解各種類型的繪圖及其在 Python 中的實(shí)現(xiàn)。
地塊類型
1. 時(shí)間圖
時(shí)間序列數(shù)據(jù)最基本的表示形式之一是時(shí)間圖,有時(shí)稱為時(shí)間序列圖。x 軸是時(shí)間,y 軸是相關(guān)變量,按時(shí)間順序顯示數(shù)據(jù)點(diǎn)。
本研究中使用時(shí)間圖來(lái)顯示 1749 年至 1983 年整個(gè)數(shù)據(jù)集期間太陽(yáng)黑子數(shù)量的每月波動(dòng)。我們可以通過(guò)查看太陽(yáng)黑子數(shù)據(jù)中的總體趨勢(shì)、季節(jié)趨勢(shì)以及任何潛在的異常值來(lái)了解更多信息在時(shí)間地圖上。
這是時(shí)間圖的代碼示例
# 時(shí)間圖 plt.figure(figsize=(7, 5)) plt.plot(data.index, data['Sunspots'], marker='o', linestyle='-', markersize=5) plt.xlabel('Date') plt.ylabel('Number of Sunspots') plt.title('Monthly Sunspots Time Plot') plt.grid(True) plt.show()
輸出:
在整個(gè)數(shù)據(jù)集期間,時(shí)間圖顯示太陽(yáng)黑子數(shù)量的每月變化。這里,太陽(yáng)黑子數(shù)量最多出現(xiàn)在 1960 年左右,最少出現(xiàn)在 1800 年左右。
2. 線圖
用直線連接數(shù)據(jù)點(diǎn)的簡(jiǎn)單可視化稱為線圖。提供時(shí)間序列數(shù)據(jù)的連續(xù)視圖,強(qiáng)調(diào)變量隨時(shí)間的趨勢(shì)和變化。它主要用于跟蹤數(shù)據(jù)中的長(zhǎng)期模式。
我們的研究中使用線圖來(lái)顯示太陽(yáng)上可見(jiàn)的黑子數(shù)量的長(zhǎng)期趨勢(shì)。這使我們能夠確定太陽(yáng)黑子活動(dòng)的總體趨勢(shì)以及太陽(yáng)黑子的數(shù)量隨著時(shí)間的推移是增加、減少還是保持不變。
現(xiàn)在讓我們用 python 來(lái)繪制它
# 折線圖 import matplotlib.pyplot as plt plt.figure(figsize=(7, 5)) plt.plot(data) plt.xlabel('Date') plt.ylabel('Number of Sunspots') plt.title('Monthly Sunspots Line Plot') plt.grid(True) plt.show()
輸出:
現(xiàn)在,時(shí)間圖和線圖看起來(lái)幾乎相同,但需要注意的是,線圖是顯示兩個(gè)連續(xù)變量之間關(guān)系的圖的通用術(shù)語(yǔ),沒(méi)有特別強(qiáng)調(diào)時(shí)間。
另一方面,時(shí)間圖是線圖的一種特殊形式,專注于可視化變量如何隨時(shí)間變化,其中時(shí)間是 x 軸變量。時(shí)間圖在處理時(shí)間序列數(shù)據(jù)時(shí)特別有用,其中觀察值按時(shí)間順序排序并以規(guī)則的時(shí)間間隔記錄。
3.季節(jié)情節(jié)
季節(jié)性圖將時(shí)間序列數(shù)據(jù)分解為季節(jié)性分量,以說(shuō)明在預(yù)定時(shí)間間隔(例如年度或每月周期)內(nèi)重復(fù)出現(xiàn)的模式。它使我們能夠識(shí)別太陽(yáng)黑子活動(dòng)的反復(fù)趨勢(shì),例如全年活動(dòng)的變化。
這是季節(jié)性圖的代碼示例
# 季節(jié)性圖 plt.figure(figsize=(7, 5)) sns.lineplot(x=data.index.month, y=data['Sunspots'], ci=None) plt.xlabel('Month') plt.ylabel('Number of Sunspots') plt.title('Seasonal Plot') plt.xticks(range(1, 13), labels=[ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) plt.grid(True) plt.show()
輸出:
從這個(gè)季節(jié)性圖中,我們可以更多地了解太陽(yáng)活動(dòng)的季節(jié)性,它揭示了太陽(yáng)黑子活動(dòng)往往較高或較低的月份。
4. 直方圖和密度圖
密度圖定義為一種圖形表示形式,用于可視化數(shù)據(jù)分布并估計(jì)連續(xù)隨機(jī)變量的概率密度函數(shù) (PDF)。它基本上是直方圖的平滑版本,提供代表基礎(chǔ)數(shù)據(jù)分布的連續(xù)曲線。當(dāng)處理大型數(shù)據(jù)集或需要平滑、連續(xù)的數(shù)據(jù)表示以闡明值在整個(gè)時(shí)間序列中的分布情況時(shí),這些圖非常適合。
這是直方圖和密度圖的代碼示例
# 直方圖和密度圖 plt.figure(figsize=(7, 5)) sns.histplot(data['Sunspots'], kde=True) plt.xlabel('Number of Sunspots') plt.ylabel('Frequency') plt.title('Histogram and Density Plot') plt.grid(True) plt.show()
輸出:
密度圖和直方圖顯示了太陽(yáng)黑子數(shù)量的頻率分布,有助于我們理解太陽(yáng)黑子分布的形式及其集中趨勢(shì)。
5. 自相關(guān)圖
自相關(guān)圖,也稱為相關(guān)圖,被定義為一種時(shí)間序列分析工具,用于顯示時(shí)間序列在各種滯后情況下與其自身的自相關(guān)性。數(shù)據(jù)點(diǎn)與其在不同時(shí)間滯后的先前觀測(cè)值之間的聯(lián)系是通過(guò)自相關(guān)來(lái)測(cè)量的。它基本上表示時(shí)間序列與其自身滯后值之間的相關(guān)性。這些圖主要用于識(shí)別數(shù)據(jù)中的季節(jié)性滯后
現(xiàn)在讓我們使用 python 繪制自相關(guān)圖
# 自相關(guān)圖 plt.figure(figsize=(7,5)) plot_acf(data['Sunspots'], lags=50) plt.xlabel('Lags') plt.ylabel('Autocorrelation') plt.title('Autocorrelation Plot') plt.grid(True) plt.show()
輸出:
自相關(guān)圖顯示不同滯后的相關(guān)性,這對(duì)于了解太陽(yáng)黑子活動(dòng)的季節(jié)性模式很有用。特定延遲的顯著自相關(guān)表明太陽(yáng)黑子活動(dòng)可能遵循每年的模式。
6. 偏自相關(guān)函數(shù) (PACF) 圖
偏自相關(guān)函數(shù) (PACF)圖是時(shí)間序列分析中使用的圖形工具,用于確定時(shí)間序列的自回歸 (AR) 階數(shù)。在考慮所有中間延遲的影響的同時(shí),它顯示了每個(gè)延遲對(duì)時(shí)間序列當(dāng)前值的直接影響。基本上,它檢查數(shù)據(jù)點(diǎn)與其先前觀察值之間的相關(guān)性,而不考慮干預(yù)時(shí)間步長(zhǎng)的影響。
以下是偏自相關(guān)函數(shù) (PACF) 圖的代碼示例
# PACF圖 plt.figure(figsize=(7, 5)) plot_pacf(data['Sunspots'], lags=50) plt.xlabel('Lags') plt.ylabel('Partial Autocorrelation') plt.title('Partial Autocorrelation Function (PACF) Plot') plt.grid(True) plt.show()
輸出:
在我們的方法中,使用 PACF 圖確定對(duì)當(dāng)前太陽(yáng)黑子計(jì)數(shù)有重大影響的滯后觀測(cè)數(shù)量。PACF 幫助選擇 AR 模型對(duì)太陽(yáng)黑子活動(dòng)的預(yù)測(cè)順序。
7. 極坐標(biāo)圖
極坐標(biāo)圖是一種數(shù)據(jù)可視化圖,其中數(shù)據(jù)點(diǎn)以圓形圖案排列。圍繞圓的角度和距中心的徑向距離用于表示各種變量或數(shù)據(jù)屬性。這些主要用于可視化數(shù)據(jù)集中的季節(jié)性模式。
這是極坐標(biāo)圖的代碼示例
# 從上述數(shù)據(jù)集“Monthly Sunspots”的索引中提取月份和年份 data['Month_Num'] = data.index.month # 按月份對(duì)數(shù)據(jù)進(jìn)行分組,計(jì)算每個(gè)月的平均太陽(yáng)黑子數(shù) monthly_average = data.groupby('Month_Num')['Sunspots'].mean() # 極坐標(biāo)圖θ(角度)和半徑(長(zhǎng)度)設(shè)置 theta = np.linspace(0, 2 * np.pi, len(monthly_average)) radii = monthly_average.values # 極坐標(biāo)圖 plt.figure(figsize=(7, 5)) plt.polar(theta, radii) plt.title('Polar Plot of Monthly Average Sunspots') plt.xticks(theta, ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']) # 設(shè)置y軸限制以適應(yīng)數(shù)據(jù) plt.ylim(0, radii.max() + 10) plt.show()
輸出:
本例中的極坐標(biāo)圖顯示每月的平均太陽(yáng)黑子數(shù)量。距中心的徑向距離反映了每個(gè)月的平均太陽(yáng)黑子數(shù)量,而圓內(nèi)的角位置則代表月份(例如,一月、二月、三月等)。它揭示了數(shù)據(jù)中存在的任何季節(jié)性趨勢(shì),并使我們能夠看到太陽(yáng)黑子活動(dòng)年度周期的循環(huán)模式。
極地圖中迷人地顯示了每月平均的太陽(yáng)黑子視圖,這也揭示了全年的周期性趨勢(shì)。
8. 移動(dòng)平均圖
在時(shí)間序列分析中,移動(dòng)平均圖是一種流行的數(shù)據(jù)可視化方法,用于發(fā)現(xiàn)數(shù)據(jù)中的趨勢(shì)和模式。其主要目標(biāo)是通過(guò)確定連續(xù)數(shù)據(jù)點(diǎn)的指定窗口的平均值來(lái)消除短期波動(dòng)并揭示數(shù)據(jù)的長(zhǎng)期趨勢(shì)。
對(duì)窗口內(nèi)的數(shù)據(jù)點(diǎn)進(jìn)行平均,并將結(jié)果值顯示在圖表上以生成移動(dòng)平均圖。當(dāng)移動(dòng)平均線位于原始數(shù)據(jù)圖上時(shí),可以更輕松地發(fā)現(xiàn)和比較趨勢(shì)和季節(jié)性模式。
這是移動(dòng)平均圖的代碼示例
# 移動(dòng)平均線圖 plt.figure(figsize=(7, 5)) values = data['Sunspots'] # 7天移動(dòng)平均線 rolling_mean = values.rolling(window=7).mean() plt.plot(values, label='Original') plt.plot(rolling_mean, label='7-day Moving Average', color='red') plt.xlabel('Date') plt.ylabel('Value') plt.title('Moving Average Plot') plt.legend() plt.grid(True) plt.show()
輸出:
我們?cè)谶@里繪制 7 天移動(dòng)平均線。我們知道,移動(dòng)平均是一種通過(guò)確定后續(xù)數(shù)據(jù)點(diǎn)的預(yù)定窗口的平均值來(lái)平滑數(shù)據(jù)的技術(shù)。用于平均的數(shù)據(jù)點(diǎn)的數(shù)量取決于窗口大小,通常稱為移動(dòng)平均周期。此方法涉及對(duì) 7 天內(nèi)的初始太陽(yáng)黑子數(shù)據(jù)進(jìn)行平均。
結(jié)論:
通過(guò)利用這些不同的繪圖和數(shù)據(jù)可視化技術(shù),我們可以全面了解“每月太陽(yáng)黑子”數(shù)據(jù)集,識(shí)別模式并提取有關(guān)幾個(gè)世紀(jì)以來(lái)太陽(yáng)活動(dòng)的寶貴見(jiàn)解。
通過(guò)這項(xiàng)研究,您現(xiàn)在掌握了將這些技術(shù)應(yīng)用于各個(gè)部門和行業(yè)的時(shí)間序列數(shù)據(jù)集所需的知識(shí)。時(shí)間序列分析為在任何需要序列數(shù)據(jù)的領(lǐng)域(包括經(jīng)濟(jì)、金融、氣候研究和其他領(lǐng)域)獲取深刻見(jiàn)解和做出數(shù)據(jù)驅(qū)動(dòng)決策提供了重要工具。通過(guò)采用這些方法,我們能夠利用與時(shí)間相關(guān)的數(shù)據(jù)并挖掘其預(yù)測(cè)潛力來(lái)解決現(xiàn)實(shí)世界的問(wèn)題。
以上就是使用Python進(jìn)行時(shí)間序列分析的8種繪圖類型的詳細(xì)內(nèi)容,更多關(guān)于Python繪圖類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python_tkinter彈出對(duì)話框創(chuàng)建2
這篇文章主要介紹了python_tkinter彈出對(duì)話框創(chuàng)建,上以篇文章我們簡(jiǎn)單的對(duì)對(duì)話框創(chuàng)建做了簡(jiǎn)單介紹,本文將繼續(xù)更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-03-03python獲取當(dāng)前時(shí)間對(duì)應(yīng)unix時(shí)間戳的方法
這篇文章主要介紹了python獲取當(dāng)前時(shí)間對(duì)應(yīng)unix時(shí)間戳的方法,涉及Python時(shí)間操作的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-05-05Python實(shí)現(xiàn)可自定義大小的截屏功能
這篇文章主要介紹了Python實(shí)現(xiàn)可自定義大小的截屏功能,結(jié)合實(shí)例形式分析了Python針對(duì)指定范圍的截圖、保存等功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01Python數(shù)據(jù)分析之?Pandas?Dataframe條件篩選遍歷詳情
這篇文章主要介紹了Python數(shù)據(jù)分析之?Pandas?Dataframe條件篩選遍歷詳情,查詢Pandas?Dataframe數(shù)據(jù)時(shí),經(jīng)常會(huì)篩選出符合條件的數(shù)據(jù),關(guān)于其使用方式,需要的小伙伴可以參考一下下面文章內(nèi)容2022-05-05