<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 使用 Python 進行時間序列數據可視化 > 原文: [https://machinelearningmastery.com/time-series-data-visualization-with-python/](https://machinelearningmastery.com/time-series-data-visualization-with-python/) #### 使用 Python 繪制時間序列數據的 6 種方法 時間序列自然適用于可視化。 隨著時間的推移觀察的線圖很受歡迎,但是您可以使用一套其他圖來了解有關您的問題的更多信息。 您對數據的了解越多,就越有可能開發出更好的預測模型。 在本教程中,您將發現可用于使用 Python 可視化時間序列數據的 6 種不同類型的圖。 具體來說,完成本教程后,您將了解: * 如何用線圖,滯后圖和自相關圖來探索時間序列的時間結構。 * 如何使用直方圖和密度圖來理解觀測的分布。 * 如何使用箱形和須狀圖以及熱圖繪制來區分間隔內的分布變化。 你最喜歡的時間序列圖是否缺失? 請在評論中告訴我。 讓我們開始吧。 ## 時間序列可視化 可視化在時間序列分析和預測中起著重要作用。 原始樣本數據的圖可以提供有價值的診斷,以識別可影響模型選擇的時間結構,如趨勢,周期和季節性。 問題在于時間序列預測領域的許多新手都以線圖停止。 在本教程中,我們將介紹可以在您自己的時間序列數據上使用的 6 種不同類型的可視化。他們是: 1. 線圖。 2. 直方圖和密度圖。 3. 盒子和晶須圖。 4. 熱圖。 5. 滯后圖或散點圖。 6. 自相關圖。 重點是單變量時間序列,但是當您在每個時間步進行多次觀察時,這些技術同樣適用于多變量時間序列。 接下來,讓我們看一下我們將在本教程中用于演示時間序列可視化的數據集。 ## 最低每日溫度數據集 該數據集描述了澳大利亞墨爾本市 10 年(1981-1990)的最低日常溫度。 單位為攝氏度,有 3,650 個觀測值。數據來源被稱為澳大利亞氣象局。 [下載數據集](https://datamarket.com/data/set/2324/daily-minimum-temperatures-in-melbourne-australia-1981-1990)并將其放在當前工作目錄中,文件名為“ _daily-minimum-Temperats.sv_ ”。 **注意**:下載的文件包含一些問號(“?”)字符,必須先將其刪除才能使用數據集。在文本編輯器中打開文件并刪除“?”字符。同時刪除文件中的任何頁腳信息。 下面是將數據集加載為 Panda 系列的示例。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) print(series.head()) ``` 運行該示例將加載數據集并打印前 5 行。 ```py Date 1981-01-01 20.7 1981-01-02 17.9 1981-01-03 18.8 1981-01-04 14.6 1981-01-05 15.8 Name: Temp, dtype: float64 ``` ## 1.時間序列線圖 時間序列的第一個,也許是最流行的可視化是線圖。 在該圖中,時間在 x 軸上顯示,沿 y 軸具有觀察值。 下面是將最小每日溫度數據集的 Pandas 系列直接可視化為線圖的示例。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) series.plot() pyplot.show() ``` 運行該示例會創建一個線圖。 ![Minimum Daily Temperature Line Plot](https://img.kancloud.cn/4f/30/4f30c95f7611e9a7bbbb080410ec5623_800x600.jpg) 最低每日溫度線圖 線圖非常密集。 有時它可以幫助改變線條圖的風格;例如,使用虛線或點。 下面是將線條樣式更改為黑點而不是連接線的示例( _style ='k。'_ 參數)。 我們可以通過將樣式設置為' _k-_ '來更改此示例以使用虛線。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) series.plot(style='k.') pyplot.show() ``` 運行該示例使用點而不是連接線重新創建相同的線圖。 ![Minimum Daily Temperature Dot Plot](https://img.kancloud.cn/b0/d0/b0d03a50142d6b32fa8f53e9bbaf96cb_800x600.jpg) 最低每日溫度點圖 比較相同區間的線圖可能會有所幫助,例如每天,每月,每年和每年。 最低每日溫度數據集跨越 10 年。我們可以按年度對數據進行分組,并創建每年的線圖以進行直接比較。 以下示例顯示了如何執行此操作。首先,觀察按年分組( _series.groupby(TimeGrouper('A'))_)。 然后枚舉這些組,并將每年的觀察結果存儲為新 DataFrame 中的列。 最后,創建了這個設計的 DataFrame 的圖,每個列都可視化為子圖,其中移除了圖例以減少雜亂。 ```py from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) groups = series.groupby(TimeGrouper('A')) years = DataFrame() for name, group in groups: years[name.year] = group.values years.plot(subplots=True, legend=False) pyplot.show() ``` 運行該示例創建 10 個線圖,從 1981 年的頂部開始每年一個,在底部的 1990 年,每個線圖的長度為 365 天。 ![Minimum Daily Temperature Yearly Line Plots](https://img.kancloud.cn/e5/16/e51674da61905636fa466c46f724e75e_800x600.jpg) 最低每日溫度年線圖 ## 2.時間序列直方圖和密度圖 另一個重要的可視化是觀察本身的分布。 這意味著沒有時間排序的值的圖。 一些線性時間序列預測方法假設觀察結果表現良好(即鐘形曲線或正態分布)。可以使用統計假設檢驗等工具明確檢查。但是,繪圖可以在原始觀察和任何類型的數據變換執行后提供有用的第一次觀察。 下面的示例創建最小每日溫度數據集中觀測值的直方圖。直方圖將值分組到箱中,并且每個箱中的觀測頻率或計數可以提供對觀測的基礎分布的洞察。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) series.hist() pyplot.show() ``` 運行該示例顯示看起來強烈高斯的分布。繪圖功能根據數據中值的擴展自動選擇分檔的大小。 ![Minimum Daily Temperature Histogram Plot](https://img.kancloud.cn/4f/c2/4fc27a22cf6739191f8437f518db4e9e_800x600.jpg) 最低每日溫度直方圖 通過使用密度圖,我們可以更好地了解觀測分布的形狀。 這就像直方圖,除了一個函數用于擬合觀察的分布,一個漂亮,平滑的線用于總結這個分布。 以下是最低每日溫度數據集的密度圖示例。 ```py from pandas import Series from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) series.plot(kind='kde') pyplot.show() ``` 運行該示例將創建一個圖表,該圖表提供了更清晰的觀察分布摘要。我們可以看到,分布可能有點不對稱,也許有點像高斯。 看到像這樣的分布可能會建議以后探索統計假設檢驗,以正式檢查分布是否是高斯分布,以及可能重新分配分布的數據準備技術,如 Box-Cox 變換。 ![Minimum Daily Temperature Density Plot](https://img.kancloud.cn/a8/75/a8755a7f2b059f9a84a6332fa5d14100_800x600.jpg) 最低每日溫度密度圖 ## 3.按時間間隔劃分的時間序列框和晶須圖 直方圖和密度圖提供了對所有觀測值分布的深入了解,但我們可能對按時間間隔的值分布感興趣。 另一種有助于總結觀察分布的圖是盒子和須狀圖。該圖繪制了一個圍繞數據的第 25 和第 75 百分位的框,其捕獲了中間 50%的觀察結果。在第 50 百分位(中位數)繪制一條線,并在方框的上方和下方繪制晶須,以總結觀察的一般范圍。對于數據的胡須或范圍之外的異常值繪制點。 可以為時間序列中的每個間隔創建框和晶須圖,例如年,月或天。 下面是按年度對最低每日溫度數據集進行分組的示例,如上圖中的示例所示。然后每年創建一個盒子和胡須圖,并排列并排以進行直接比較。 ```py from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) groups = series.groupby(TimeGrouper('A')) years = DataFrame() for name, group in groups: years[name.year] = group.values years.boxplot() pyplot.show() ``` 以一致的間隔比較盒子和須狀圖是一種有用的工具。在一個區間內,它可以幫助發現異常值(胡須上方或下方的點)。 在這幾年的間隔期間,我們可以查找可以建模的多年趨勢,季節性和其他結構信息。 ![Minimum Daily Temperature Yearly Box and Whisker Plots](https://img.kancloud.cn/6e/8e/6e8e8d8df8b3c98fb9a6b099fd5759c2_800x600.jpg) 每年最低溫度箱和晶須圖 我們也可能對一年內數月的價值分布感興趣。 下面的示例創建了 12 個盒子和須狀圖,一個用于 1990 年的每個月,即數據集中的最后一年。 在該示例中,首先,僅提取 1990 年的觀測值。 然后,觀察按月分組,每個月作為列添加到新的 DataFrame 中。 最后,為新構造的 DataFrame 中的每個月 - 列創建一個框和胡須圖。 ```py from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot from pandas import concat series = Series.from_csv('daily-minimum-temperatures.csv', header=0) one_year = series['1990'] groups = one_year.groupby(TimeGrouper('M')) months = concat([DataFrame(x[1].values) for x in groups], axis=1) months = DataFrame(months) months.columns = range(1,13) months.boxplot() pyplot.show() ``` 運行這個例子創建了 12 個盒子和胡須圖,顯示了從 1 月份的南半球夏季到年中的南半球冬季,以及再次回到夏季,一年中最低溫度分布的顯著變化。 ![Minimum Daily Temperature Monthly Box and Whisker Plots](https://img.kancloud.cn/f2/2a/f22a6541386a570ac6cc82240d8f58a4_800x600.jpg) 最低每日溫度每月盒子和晶須圖 ## 4.時間序列熱圖 可以將數字矩陣繪制為表面,其中矩陣的每個單元格中的值被賦予唯一的顏色。 這被稱為熱圖,因為較大的值可以用較暖的顏色(黃色和紅色)繪制,較小的值可以用較冷的顏色(藍色和綠色)繪制。 像盒子和胡須圖一樣,我們可以使用熱圖比較間隔之間的觀察結果。 在最低每日溫度的情況下,觀測值可以排列成年 - 列和日 - 行的矩陣,每天的單元格溫度最低。然后可以繪制該矩陣的熱圖。 以下是創建最低每日溫度數據的熱圖的示例。使用 matplotlib 庫中的 matshow()函數,因為沒有直接在 Pandas 中提供熱圖支持。 為方便起見,矩陣是旋轉(轉置),因此每行代表一年,每列代表一天。這提供了更直觀,從左到右的數據布局。 ```py from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) groups = series.groupby(TimeGrouper('A')) years = DataFrame() for name, group in groups: years[name.year] = group.values years = years.T pyplot.matshow(years, interpolation=None, aspect='auto') pyplot.show() ``` 該圖顯示了這些年中的較冷的最低溫度以及這些年的開始和結束時較溫暖的最低溫度,以及它們之間的所有衰落和復雜性。 ![Minimum Daily Temperature Yearly Heat Map Plot](https://img.kancloud.cn/df/e8/dfe843f7c77ca7c3ddd4a296b1a2dec5_1600x200.jpg) 每日最低溫度年熱圖 與上面的方框和胡須圖示例一樣,我們也可以比較一年內的月份。 下面是一個熱圖的示例,比較 1990 年的一年中的幾個月。每列代表一個月,行代表從 1 到 31 的月份日期。 ```py from pandas import Series from pandas import DataFrame from pandas import TimeGrouper from matplotlib import pyplot from pandas import concat series = Series.from_csv('daily-minimum-temperatures.csv', header=0) one_year = series['1990'] groups = one_year.groupby(TimeGrouper('M')) months = concat([DataFrame(x[1].values) for x in groups], axis=1) months = DataFrame(months) months.columns = range(1,13) pyplot.matshow(months, interpolation=None, aspect='auto') pyplot.show() ``` 運行該示例顯示了每月在縮放的月度級別上看到的相同宏觀趨勢。 我們還可以在圖的底部看到一些白色斑塊。對于那些少于 31 天的月份而言,這是缺失的數據,而二月份在 1990 年的 28 天內相當異常。 ![Minimum Daily Temperature Monthly Heat Map Plot](https://img.kancloud.cn/93/c7/93c7ce3c481ff6324f61dbfdfc665915_400x1032.jpg) 每日最低溫度月熱圖 ## 5.時間序列滯后散點圖 時間序列建模假定觀察與先前觀察之間的關系。 先前在時間序列中的觀察被稱為滯后,在前一時間步驟的觀察被稱為 lag1,在兩個時間步驟之前的觀察被稱為 lag2,依此類推。 探索每個觀測與該觀測滯后之間關系的有用類型的圖稱為散點圖。 Pandas 有一個內置函數,正好稱為滯后圖。它繪制了在 x 軸上的時間 t 處的觀察和在 y 軸上的 lag1 觀察(t-1)。 * 如果點沿著從圖的左下角到右上角的對角線聚集,則表明正相關關系。 * 如果點沿著從左上角到右下角的對角線聚集,則表明負相關關系。 * 兩種關系都很好,因為它們可以建模。 對角線更緊密的點表明關系更強,而且線上更多的分布表明關系更弱。 中間的一個球或橫跨該地塊的一個球表明弱關系或無關系。 下面是最低每日溫度數據集的滯后圖的示例。 ```py from pandas import Series from matplotlib import pyplot from pandas.tools.plotting import lag_plot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) lag_plot(series) pyplot.show() ``` 通過運行該示例創建的圖顯示了觀察值與其 lag1 值之間的相對強的正相關性。 ![Minimum Daily Temperature Lag Plot](https://img.kancloud.cn/ca/0b/ca0b80af46a3d94c9a5752752592f9a2_800x600.jpg) 最低每日溫度滯后圖 我們可以重復這個過程進行觀察和任何滯后值。也許在上周,上個月或去年的同一時間觀察,或者我們可能希望探索的任何其他領域特定知識。 例如,我們可以使用前七天中的每個值為觀察創建散點圖。以下是最低每日溫度數據集的示例。 首先,創建一個新的 DataFrame,并將滯后值作為新列。列名稱相應。然后創建一個新的子圖,用不同的滯后值繪制每個觀察。 ```py from pandas import Series from pandas import DataFrame from pandas import concat from matplotlib import pyplot from pandas.plotting import scatter_matrix series = Series.from_csv('daily-minimum-temperatures.csv', header=0) values = DataFrame(series.values) lags = 7 columns = [values] for i in range(1,(lags + 1)): columns.append(values.shift(i)) dataframe = concat(columns, axis=1) columns = ['t+1'] for i in range(1,(lags + 1)): columns.append('t-' + str(i)) dataframe.columns = columns pyplot.figure(1) for i in range(1,(lags + 1)): ax = pyplot.subplot(240 + i) ax.set_title('t+1 vs t-' + str(i)) pyplot.scatter(x=dataframe['t+1'].values, y=dataframe['t-'+str(i)].values) pyplot.show() ``` 運行該示例表明觀察與其 lag1 值之間的最強關系,但通常與上周的每個值具有良好的正相關性。 ![Minimum Daily Temperature Scatter Plots](https://img.kancloud.cn/dd/9b/dd9be00111f44cebe064d11841b49717_800x600.jpg) 最低每日溫度散點圖 ## 6.時間序列自相關圖 我們可以量化觀察與其滯后之間關系的強度和類型。 在統計中,這稱為相關,當根據時間序列中的滯后值計算時,稱為自相關(自相關)。 在兩組數字之間計算的相關值,例如觀察值和它們的 lag1 值,得到-1 和 1 之間的數字。該數字的符號分別表示負相關或正相關。接近零的值表示弱相關,而接近-1 或 1 的值表示強相關。 可以針對每個觀察和不同的滯后值計算稱為相關系數的相關值。一旦計算出來,就可以創建一個圖,以幫助更好地理解這種關系如何隨著滯后而變化。 這種類型的圖稱為自相關圖,Pandas 提供內置的此功能,稱為 autocorrelation_plot()函數。 以下示例為最低每日溫度數據集創建自相關圖: ```py from pandas import Series from matplotlib import pyplot from pandas.tools.plotting import autocorrelation_plot series = Series.from_csv('daily-minimum-temperatures.csv', header=0) autocorrelation_plot(series) pyplot.show() ``` 得到的圖顯示沿 x 軸的滯后和 y 軸的相關性。提供虛線表示這些線上方的任何相關值具有統計顯著性(有意義)。 我們可以看到,對于最低每日溫度數據集,我們看到強烈的負相關和正相關的周期。這捕獲了觀察與過去觀察在相同和相反季節或一年中的時間的關系。像本例中所見的正弦波是數據集中季節性的強烈信號。 ![Minimum Daily Temperature Autocorrelation Plot](https://img.kancloud.cn/ab/65/ab650829feda53177dde58477f5ffcf9_800x600.jpg) 最低每日溫度自相關圖 ## 進一步閱讀 本節提供了一些資源,可用于進一步閱讀繪圖時間序列以及本教程中使用的 Pandas 和 Matplotlib 函數。 * [度量圖 101:時間序列圖](https://www.datadoghq.com/blog/timeseries-metric-graphs-101/) * [可視化動物園之旅](http://homes.cs.washington.edu/~jheer//files/zoo/) * [熊貓繪圖](http://pandas.pydata.org/pandas-docs/version/0.19.0/visualization.html) * [DataFrame 繪圖函數](http://pandas.pydata.org/pandas-docs/version/0.19.1/generated/pandas.DataFrame.plot.html) ## 摘要 在本教程中,您了解了如何在 Python 中探索和更好地理解時間序列數據集。 具體來說,你學到了: * 如何探索與線,散點和自相關圖的時間關系。 * 如何用直方圖和密度圖探索觀測分布。 * 如何用箱形和晶須和熱圖繪制來探索觀測分布的變化。 您對繪制時間序列數據或本教程有任何疑問嗎? 在評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看