使用Python進(jìn)行時(shí)間序列分析的8種繪圖類型
時(shí)間序列數(shù)據(jù)
時(shí)間序列數(shù)據(jù)是按時(shí)間順序按固定時(shí)間間隔排列的觀測值的集合。每個(gè)觀察對應(yīng)于一個(gè)特定的時(shí)間點(diǎn),并且可以以各種頻率(例如,每天、每月、每年)記錄數(shù)據(jù)。此類數(shù)據(jù)在許多領(lǐng)域都非常重要,包括金融、經(jīng)濟(jì)、氣候科學(xué)等,因?yàn)樗兄谕ㄟ^分析時(shí)間序列數(shù)據(jù)來掌握潛在模式、發(fā)現(xiàn)趨勢和發(fā)現(xiàn)季節(jié)性波動(dòng)。
什么是時(shí)間序列分析?
評估時(shí)間序列數(shù)據(jù)以確定相關(guān)統(tǒng)計(jì)數(shù)據(jù)和其他數(shù)據(jù)屬性的技術(shù)稱為時(shí)間序列分析。任何具有重復(fù)模式的時(shí)間序列,包括金融市場、天氣和社交媒體統(tǒng)計(jì)數(shù)據(jù),都可能受到影響。時(shí)間序列分析的主要目標(biāo)是研究有關(guān)市場趨勢和經(jīng)濟(jì)周期的關(guān)鍵思想。
可視化在從時(shí)間序列數(shù)據(jù)中獲取有洞察力的信息的過程中至關(guān)重要,使我們能夠理解復(fù)雜的關(guān)系并做出明智的決策。
本文介紹了幾種類型的繪圖,可幫助您使用 Python 進(jìn)行時(shí)間序列分析,并提供使用可免費(fèi)訪問的數(shù)據(jù)集的詳細(xì)示例。
數(shù)據(jù)集描述
數(shù)據(jù)集:太陽黑子數(shù)據(jù)集
什么是太陽黑子?
太陽黑子是太陽表面的區(qū)域,稱為光球?qū)?,此處磁場集中,?dǎo)致表面溫度低于周圍環(huán)境。太陽復(fù)雜的磁活動(dòng)是產(chǎn)生這些黑色區(qū)域的原因。
太陽黑子的觀測和記錄已有多年,其中一些最早的記錄來自古代文明。他們的研究極大地有助于了解太陽行為、太空天氣及其對地球氣候和通信系統(tǒng)可能產(chǎn)生的影響??茖W(xué)家仍在研究太陽黑子,以更多地了解太陽磁場的動(dòng)態(tài)及其如何影響我們的太陽系。
數(shù)據(jù)集變量:數(shù)據(jù)集由 2 列組成 - 從 1749 年到 1983 年的“月份”和“太陽黑子”。它基本上描述了該數(shù)據(jù)集中記錄的每個(gè)月在太陽上看到的太陽黑子的數(shù)量。
現(xiàn)在讓我們開始編碼吧!
導(dǎo)入必要的庫
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ù)集
# 加載每月太陽黑子數(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í)間圖來顯示 1749 年至 1983 年整個(gè)數(shù)據(jù)集期間太陽黑子數(shù)量的每月波動(dòng)。我們可以通過查看太陽黑子數(shù)據(jù)中的總體趨勢、季節(jié)趨勢以及任何潛在的異常值來了解更多信息在時(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í)間圖顯示太陽黑子數(shù)量的每月變化。這里,太陽黑子數(shù)量最多出現(xiàn)在 1960 年左右,最少出現(xiàn)在 1800 年左右。
2. 線圖
用直線連接數(shù)據(jù)點(diǎn)的簡單可視化稱為線圖。提供時(shí)間序列數(shù)據(jù)的連續(xù)視圖,強(qiáng)調(diào)變量隨時(shí)間的趨勢和變化。它主要用于跟蹤數(shù)據(jù)中的長期模式。
我們的研究中使用線圖來顯示太陽上可見的黑子數(shù)量的長期趨勢。這使我們能夠確定太陽黑子活動(dòng)的總體趨勢以及太陽黑子的數(shù)量隨著時(shí)間的推移是增加、減少還是保持不變。
現(xiàn)在讓我們用 python 來繪制它
# 折線圖
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í)間圖和線圖看起來幾乎相同,但需要注意的是,線圖是顯示兩個(gè)連續(xù)變量之間關(guān)系的圖的通用術(shù)語,沒有特別強(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é)性分量,以說明在預(yù)定時(shí)間間隔(例如年度或每月周期)內(nèi)重復(fù)出現(xiàn)的模式。它使我們能夠識(shí)別太陽黑子活動(dòng)的反復(fù)趨勢,例如全年活動(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é)性圖中,我們可以更多地了解太陽活動(dòng)的季節(jié)性,它揭示了太陽黑子活動(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()輸出:

密度圖和直方圖顯示了太陽黑子數(shù)量的頻率分布,有助于我們理解太陽黑子分布的形式及其集中趨勢。
5. 自相關(guān)圖
自相關(guān)圖,也稱為相關(guān)圖,被定義為一種時(shí)間序列分析工具,用于顯示時(shí)間序列在各種滯后情況下與其自身的自相關(guān)性。數(shù)據(jù)點(diǎn)與其在不同時(shí)間滯后的先前觀測值之間的聯(lián)系是通過自相關(guān)來測量的。它基本上表示時(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)性,這對于了解太陽黑子活動(dòng)的季節(jié)性模式很有用。特定延遲的顯著自相關(guān)表明太陽黑子活動(dòng)可能遵循每年的模式。
6. 偏自相關(guān)函數(shù) (PACF) 圖
偏自相關(guān)函數(shù) (PACF)圖是時(shí)間序列分析中使用的圖形工具,用于確定時(shí)間序列的自回歸 (AR) 階數(shù)。在考慮所有中間延遲的影響的同時(shí),它顯示了每個(gè)延遲對時(shí)間序列當(dāng)前值的直接影響?;旧希鼨z查數(shù)據(jù)點(diǎn)與其先前觀察值之間的相關(guān)性,而不考慮干預(yù)時(shí)間步長的影響。
以下是偏自相關(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 圖確定對當(dāng)前太陽黑子計(jì)數(shù)有重大影響的滯后觀測數(shù)量。PACF 幫助選擇 AR 模型對太陽黑子活動(dòng)的預(yù)測順序。
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
# 按月份對數(shù)據(jù)進(jìn)行分組,計(jì)算每個(gè)月的平均太陽黑子數(shù)
monthly_average = data.groupby('Month_Num')['Sunspots'].mean()
# 極坐標(biāo)圖θ(角度)和半徑(長度)設(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)圖顯示每月的平均太陽黑子數(shù)量。距中心的徑向距離反映了每個(gè)月的平均太陽黑子數(shù)量,而圓內(nèi)的角位置則代表月份(例如,一月、二月、三月等)。它揭示了數(shù)據(jù)中存在的任何季節(jié)性趨勢,并使我們能夠看到太陽黑子活動(dòng)年度周期的循環(huán)模式。
極地圖中迷人地顯示了每月平均的太陽黑子視圖,這也揭示了全年的周期性趨勢。
8. 移動(dòng)平均圖
在時(shí)間序列分析中,移動(dòng)平均圖是一種流行的數(shù)據(jù)可視化方法,用于發(fā)現(xiàn)數(shù)據(jù)中的趨勢和模式。其主要目標(biāo)是通過確定連續(xù)數(shù)據(jù)點(diǎn)的指定窗口的平均值來消除短期波動(dòng)并揭示數(shù)據(jù)的長期趨勢。
對窗口內(nèi)的數(shù)據(jù)點(diǎn)進(jìn)行平均,并將結(jié)果值顯示在圖表上以生成移動(dòng)平均圖。當(dāng)移動(dòng)平均線位于原始數(shù)據(jù)圖上時(shí),可以更輕松地發(fā)現(xiàn)和比較趨勢和季節(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()輸出:

我們在這里繪制 7 天移動(dòng)平均線。我們知道,移動(dòng)平均是一種通過確定后續(xù)數(shù)據(jù)點(diǎn)的預(yù)定窗口的平均值來平滑數(shù)據(jù)的技術(shù)。用于平均的數(shù)據(jù)點(diǎn)的數(shù)量取決于窗口大小,通常稱為移動(dòng)平均周期。此方法涉及對 7 天內(nèi)的初始太陽黑子數(shù)據(jù)進(jìn)行平均。
結(jié)論:
通過利用這些不同的繪圖和數(shù)據(jù)可視化技術(shù),我們可以全面了解“每月太陽黑子”數(shù)據(jù)集,識(shí)別模式并提取有關(guān)幾個(gè)世紀(jì)以來太陽活動(dòng)的寶貴見解。
通過這項(xiàng)研究,您現(xiàn)在掌握了將這些技術(shù)應(yīng)用于各個(gè)部門和行業(yè)的時(shí)間序列數(shù)據(jù)集所需的知識(shí)。時(shí)間序列分析為在任何需要序列數(shù)據(jù)的領(lǐng)域(包括經(jīng)濟(jì)、金融、氣候研究和其他領(lǐng)域)獲取深刻見解和做出數(shù)據(jù)驅(qū)動(dòng)決策提供了重要工具。通過采用這些方法,我們能夠利用與時(shí)間相關(guān)的數(shù)據(jù)并挖掘其預(yù)測潛力來解決現(xiàn)實(shí)世界的問題。
以上就是使用Python進(jìn)行時(shí)間序列分析的8種繪圖類型的詳細(xì)內(nèi)容,更多關(guān)于Python繪圖類型的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python_tkinter彈出對話框創(chuàng)建2
這篇文章主要介紹了python_tkinter彈出對話框創(chuàng)建,上以篇文章我們簡單的對對話框創(chuàng)建做了簡單介紹,本文將繼續(xù)更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-03-03
python獲取當(dāng)前時(shí)間對應(yīng)unix時(shí)間戳的方法
這篇文章主要介紹了python獲取當(dāng)前時(shí)間對應(yīng)unix時(shí)間戳的方法,涉及Python時(shí)間操作的相關(guān)技巧,非常簡單實(shí)用,需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)可自定義大小的截屏功能
這篇文章主要介紹了Python實(shí)現(xiàn)可自定義大小的截屏功能,結(jié)合實(shí)例形式分析了Python針對指定范圍的截圖、保存等功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
Python數(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

