旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢(xún)熱線:010-5367 2995
首頁(yè) > 熱門(mén)文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析

時(shí)間:2020-09-04來(lái)源:5wd995.cn點(diǎn)擊量:作者:Sissi
時(shí)間:2020-09-04點(diǎn)擊量:作者:Sissi



  在大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析中,我們將學(xué)習(xí)pandas庫(kù)中功能強(qiáng)大的時(shí)間序列工具。
 

  pandas最初是為金融時(shí)間序列(例如每日股票市場(chǎng)價(jià)格)開(kāi)發(fā)的,其強(qiáng)大而靈活的數(shù)據(jù)結(jié)構(gòu)可應(yīng)用于任何領(lǐng)域的時(shí)間序列數(shù)據(jù),包括商業(yè),科學(xué),工程,公共衛(wèi)生等。使用這些工具,您可以輕松地以任何粒度級(jí)別組織,轉(zhuǎn)換,分析和可視化數(shù)據(jù)-在感興趣的特定時(shí)間段檢查詳細(xì)信息,并縮小以探索不同時(shí)間范圍的變化,例如每月或每年的匯總模式和長(zhǎng)期趨勢(shì)。
 

  在最廣義的定義中,時(shí)間序列是在不同時(shí)間點(diǎn)測(cè)量值的任何數(shù)據(jù)集。許多時(shí)間序列以特定的頻率均勻地間隔開(kāi),例如每小時(shí)的天氣預(yù)報(bào),每天的網(wǎng)站訪問(wèn)次數(shù)或每月的銷(xiāo)售總額。時(shí)間序列也可以是不規(guī)則的間隔和零星的,例如,計(jì)算機(jī)系統(tǒng)的事件日志中的時(shí)間戳數(shù)據(jù)或911緊急呼叫的歷史記錄。pandas時(shí)間序列工具同樣適用于兩種時(shí)間序列。
 

  大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析將主要關(guān)注時(shí)間序列分析的數(shù)據(jù)處理和可視化方面。使用能源數(shù)據(jù)的時(shí)間序列,我們將看到基于時(shí)間的索引編制,重采樣和滾動(dòng)窗口之類(lèi)的技術(shù)如何幫助我們探索電力需求和可再生能源供應(yīng)隨時(shí)間的變化。我們將涵蓋以下主題:
 

  1)數(shù)據(jù)集:開(kāi)放式電源系統(tǒng)數(shù)據(jù)

  2)時(shí)間序列數(shù)據(jù)結(jié)構(gòu)

  3)基于時(shí)間的索引

  4)可視化時(shí)間序列數(shù)據(jù)

  5)季節(jié)性

  6)頻率

  7)重采樣

  8)卷簾窗

  9)發(fā)展趨勢(shì)
 

  我們將使用Python 3.6,pandas,matplotlib和seaborn。為了充分利用大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析,您需要熟悉pandas和matplotlib的基礎(chǔ)知識(shí)。
 

  還不在那里嗎?使用我們的Python數(shù)據(jù)科學(xué)基礎(chǔ)知識(shí)和中級(jí)課程來(lái)建立您的基礎(chǔ)Python技能。
 

  數(shù)據(jù)集:開(kāi)放式電源系統(tǒng)數(shù)據(jù)
 

  在大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析中,我們將使用德國(guó)的開(kāi)放電源系統(tǒng)數(shù)據(jù)(OPSD)的每日時(shí)間序列,該數(shù)據(jù)近年來(lái)已在迅速擴(kuò)展其可再生能源的生產(chǎn)。數(shù)據(jù)集包括2006-2017年全國(guó)范圍的用電量,風(fēng)力發(fā)電和太陽(yáng)能發(fā)電總量。您可以在此處下載數(shù)據(jù)。
 

  電力生產(chǎn)和消耗報(bào)告為千兆瓦時(shí)(GWh)的每日總計(jì)。數(shù)據(jù)文件的列為:
 

  1)Date—日期(yyyy-mm-dd格式)

  2)Consumption —用電量(GWh)

  3)Wind — GWh中的風(fēng)力發(fā)電

  4)Solar — GWh中的太陽(yáng)能發(fā)電

  5)Wind+Solar —風(fēng)電和太陽(yáng)能發(fā)電量的總和
 

  我們將使用pandas時(shí)間序列工具來(lái)回答以下問(wèn)題,以探索德國(guó)的電力消耗和生產(chǎn)隨時(shí)間的變化:
 

  1)通常什么時(shí)候耗電量最高和最低?

  2)風(fēng)力和太陽(yáng)能發(fā)電量會(huì)隨著季節(jié)的變化而變化嗎?

  3)電力消耗,太陽(yáng)能和風(fēng)能的長(zhǎng)期趨勢(shì)是什么?

  4)風(fēng)能和太陽(yáng)能發(fā)電與電能消耗如何比較,該比率隨時(shí)間變化如何?
 

  時(shí)間序列數(shù)據(jù)結(jié)構(gòu)
 

  在深入研究OPSD數(shù)據(jù)之前,讓我們簡(jiǎn)要介紹一下用于處理日期和時(shí)間的主要pandas數(shù)據(jù)結(jié)構(gòu)。在pandas中,單個(gè)時(shí)間點(diǎn)表示為T(mén)imestamp。我們可以使用該to_datetime()函數(shù)從各種日期/時(shí)間格式的字符串中創(chuàng)建時(shí)間戳。讓我們導(dǎo)入pandas并將一些日期和時(shí)間轉(zhuǎn)換為時(shí)間戳。
 

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  如我們所見(jiàn),to_datetime()將根據(jù)輸入自動(dòng)推斷日期/時(shí)間格式。在上面的示例中,不明確的日期'7/8/1952'假定為月/日/年,并解釋為1952年7月8日?;蛘撸覀兛梢允褂胐ayfirst參數(shù)告訴pandas將日期解釋為1952年8月7日。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  如果我們提供字符串列表或字符串?dāng)?shù)??組作為的輸入to_datetime(),則它將在DatetimeIndex對(duì)象中返回日期/時(shí)間值的序列,該對(duì)象是支持大部分pandas時(shí)間序列功能的核心數(shù)據(jù)結(jié)構(gòu)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  在上面的DatetimeIndex中,數(shù)據(jù)類(lèi)型datetime64[ns]指示基礎(chǔ)數(shù)據(jù)以64納比特(ns)為單位存儲(chǔ)為-bit整數(shù)。這種數(shù)據(jù)結(jié)構(gòu)允許pandas緊湊地存儲(chǔ)大的日期/時(shí)間值序列,并使用NumPy datetime64數(shù)組有效地執(zhí)行矢量化操作。
 

  如果我們要處理所有具有相同日期/時(shí)間格式的字符串序列,則可以使用format參數(shù)顯式指定它。對(duì)于非常大的數(shù)據(jù)集,to_datetime()與默認(rèn)行為相比,默認(rèn)行為是針對(duì)每個(gè)單獨(dú)的字符串分別推斷格式,因此可以大大提高性能。任何的格式代碼從strftime()和strptime()在Python的功能內(nèi)置日期時(shí)間模塊都可以使用。下面的示例使用格式代碼%m(數(shù)字月份),%d(月份的日期)和%y(兩位數(shù)字的年份)指定格式。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  除了代表各個(gè)時(shí)間點(diǎn)的Timestamp和DatetimeIndex對(duì)象外,pandas還包括代表持續(xù)時(shí)間(例如125秒)和時(shí)間段(例如2018年11月)的數(shù)據(jù)結(jié)構(gòu)。有關(guān)這些數(shù)據(jù)結(jié)構(gòu)的更多信息,請(qǐng)點(diǎn)擊此處。在大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析中,我們將使用DatetimeIndexes,這是pandas時(shí)間序列最常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)。
 

  創(chuàng)建時(shí)間序列DataFrame
 

  為了處理pandas中的時(shí)間序列數(shù)據(jù),我們使用DatetimeIndex作為DataFrame(或Series)的索引。讓我們看看如何使用我們的OPSD數(shù)據(jù)集執(zhí)行此操作。首先,我們使用該read_csv()函數(shù)將數(shù)據(jù)讀取到DataFrame中,然后顯示其形狀。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  DataFrame有4383行,涵蓋從2006年1月1日到2017年12月31日的時(shí)間。要查看數(shù)據(jù)的樣子,我們使用head()和tail()方法顯示前三行和后三行。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  接下來(lái),讓我們檢查每一列的數(shù)據(jù)類(lèi)型。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在,該Date列是正確的數(shù)據(jù)類(lèi)型,讓我們將其設(shè)置為DataFrame的索引。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  另外,我們可以使用函數(shù)的index_col和parse_dates參數(shù)將以上步驟合并為一行read_csv()。這通常是一個(gè)有用的快捷方式。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在,我們的DataFrame索引是DatetimeIndex,我們可以使用所有pandas基于時(shí)間的強(qiáng)大索引來(lái)處理和分析我們的數(shù)據(jù),這將在以下部分中看到。
 

  所述DatetimeIndex的另一個(gè)有用的方面是,單獨(dú)的日期/時(shí)間的部件都可用作為屬性如year,month,day,等。讓我們?cè)谥刑砑痈嗔衞psd_daily,其中包含年,月和周日的名稱(chēng)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  基于時(shí)間的索引
 

  大pandas時(shí)間序列的最強(qiáng)大和便捷的功能之一是基于時(shí)間的索引編制-使用日期和時(shí)間直觀地組織和訪問(wèn)我們的數(shù)據(jù)。使用基于時(shí)間的索引,我們可以使用日期/時(shí)間格式的字符串來(lái)通過(guò)loc訪問(wèn)器在DataFrame中選擇數(shù)據(jù)。索引的工作方式類(lèi)似于使用的標(biāo)準(zhǔn)基于標(biāo)簽的索引loc,但有一些附加功能。
 

  例如,我們可以使用諸如的字符串選擇一天的數(shù)據(jù)'2017-08-10'。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們還可以選擇一片天,例如'2014-01-20':'2014-01-22'。與使用進(jìn)行基于標(biāo)簽的常規(guī)索引一樣loc,切片包含兩個(gè)端點(diǎn)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  大pandas時(shí)間序列的另一個(gè)非常方便的功能是部分字符串索引,我們可以在其中選擇部分匹配給定字符串的所有日期/時(shí)間。例如,我們可以使用選擇2006年全年opsd_daily.loc['2006'],或2012年2月選擇整個(gè)月opsd_daily.loc['2012-02']。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  可視化時(shí)間序列數(shù)據(jù)
 

  使用pandas和matplotlib,我們可以輕松地可視化時(shí)間序列數(shù)據(jù)。在本節(jié)中,我們將介紹一些示例和一些有用的自定義時(shí)序圖。首先,讓我們導(dǎo)入matplotlib。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們將對(duì)繪圖使用seaborn樣式,然后將默認(rèn)圖形大小調(diào)整為適合時(shí)間序列繪圖的形狀。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  讓我們使用DataFrame的plot()方法創(chuàng)建德國(guó)每日用電量的全時(shí)序列的線圖。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到,該plot()方法為x軸選擇了很好的刻度位置(每?jī)赡?和標(biāo)簽(年份),這很有用。但是,由于數(shù)據(jù)點(diǎn)太多,因此線圖比較擁擠且難以讀取。讓我們將數(shù)據(jù)繪制為點(diǎn),然后查看Solar和Wind時(shí)間序列。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們已經(jīng)可以看到一些有趣的模式:
 

  1)電力消耗在冬季最高,大概是由于電加熱和照明使用增加,在夏季最低。

  2)電力消耗似乎分為兩類(lèi):一個(gè)簇的振蕩中心大約在1400 GWh左右,另一個(gè)簇的數(shù)據(jù)點(diǎn)越來(lái)越少,而散射點(diǎn)大約在1150 GWh左右。我們可能會(huì)猜測(cè)這些集群與工作日和周末相對(duì)應(yīng),我們將在短期內(nèi)對(duì)此進(jìn)行進(jìn)一步調(diào)查。

  3)夏季的太陽(yáng)能產(chǎn)量最高,而陽(yáng)光最多,而冬季則最低。

  4)風(fēng)力發(fā)電在冬季最高,大概是由于強(qiáng)風(fēng)和更頻繁的風(fēng)暴,而在夏季最低。

  5)多年來(lái),風(fēng)電生產(chǎn)似乎呈強(qiáng)勁增長(zhǎng)趨勢(shì)。
 

  這三個(gè)時(shí)間序列都清楚地顯示出周期性(在時(shí)間序列分析中通常稱(chēng)為季節(jié)性),其中,模式會(huì)以規(guī)則的時(shí)間間隔一次又一次地重復(fù)。的Consumption,Solar和Wind高低值之間的時(shí)間序列上的振蕩,每年的時(shí)間尺度,在天氣在過(guò)去一年中季節(jié)的變化相對(duì)應(yīng)的。但是,一般而言,季節(jié)性不必與氣象季節(jié)相對(duì)應(yīng)。例如,零售銷(xiāo)售數(shù)據(jù)通常表現(xiàn)出每年的季節(jié)性,在11月和12月,直到假期之前,銷(xiāo)售都有所增加。
 

  季節(jié)性也可能在其他時(shí)間范圍內(nèi)發(fā)生。上圖顯示德國(guó)的用電量每周可能有一些季節(jié)性,與工作日和周末相對(duì)應(yīng)。讓我們繪制一年中的時(shí)間序列,以進(jìn)行進(jìn)一步調(diào)查。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在我們可以清楚地看到每周的波動(dòng)。在這種粒度級(jí)別上變得顯而易見(jiàn)的另一個(gè)有趣功能是1月初和12月下旬假期期間的用電量急劇下降。
 

  讓我們進(jìn)一步放大,看看一月和二月。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  正如我們所懷疑的,平日的消費(fèi)最高,而周末的最低。
 

  自定義時(shí)間序列圖
 

  為了更好地直觀顯示上圖中每周的每周用電量季節(jié)性變化,最好在每周的時(shí)間范圍內(nèi)(而不是在每個(gè)月的第一天)使用垂直網(wǎng)格線。我們可以使用matplotlib.dates自定義我們的情節(jié),因此讓我們導(dǎo)入該模塊。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  由于日期/時(shí)間刻度在matplotlib.dates中的處理方式與DataFrame的plot()方法相比有所不同,因此讓我們直接在matplotlib中創(chuàng)建繪圖。然后,我們使用mdates.WeekdayLocator()和mdates.MONDAY將x軸刻度設(shè)置為每周的第一個(gè)星期一。我們還使用前面看到mdates.DateFormatter()的格式代碼來(lái)改進(jìn)刻度標(biāo)簽的格式。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在,我們?cè)诿總€(gè)星期一都有垂直網(wǎng)格線和格式良好的刻度標(biāo)簽,因此我們可以輕松分辨出哪幾天是工作日和周末。
 

  還有許多其他方式可以使時(shí)間序列可視化,具體取決于您嘗試探索的模式-散點(diǎn)圖,熱圖,直方圖等。在以下各節(jié)中,我們將看到其他可視化示例,包括以某種方式轉(zhuǎn)換的時(shí)間序列數(shù)據(jù)的可視化,例如聚合或平滑的數(shù)據(jù)。
 

  季節(jié)性
 

  接下來(lái),讓我們用箱形圖進(jìn)一步探索數(shù)據(jù)的季節(jié)性,使用seaborn boxplot()函數(shù)將數(shù)據(jù)按不同時(shí)間段分組并顯示每組的分布。我們將首先按月對(duì)數(shù)據(jù)進(jìn)行分組,以可視化年度季節(jié)性。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  這些箱形圖確認(rèn)了我們?cè)谳^早的圖中看到的年度季節(jié)性,并提供了其他一些見(jiàn)解:
 

  1)盡管冬季的用電量通常較高,夏季較低,但是與11月和2月相比,12月和1月的四分位數(shù)中位數(shù)和下四分位數(shù)較低,這可能是由于商家在節(jié)假日關(guān)閉。我們?cè)?017年的時(shí)間序列中看到了這一點(diǎn),箱形圖證實(shí)了這是多年來(lái)一致的模式。

  2)雖然太陽(yáng)能和風(fēng)能生產(chǎn)均顯示每年的季節(jié)性,但風(fēng)能分布卻有更多異常值,反映了暴風(fēng)雨和其他瞬態(tài)天氣條件下偶爾出現(xiàn)的極端風(fēng)速的影響。
 

  接下來(lái),讓我們按星期幾分組用電時(shí)間序列,以探討每周的季節(jié)性。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  不出所料,工作日的用電量明顯高于周末。工作日的異常值較低可能是在假日期間。
 

  本節(jié)簡(jiǎn)要介紹了時(shí)間序列的季節(jié)性。稍后我們將看到,對(duì)數(shù)據(jù)應(yīng)用滾動(dòng)窗口還可以幫助可視化不同時(shí)間范圍內(nèi)的季節(jié)性。其他用于分析季節(jié)性的技術(shù)包括自相關(guān)圖,該圖繪制了時(shí)間序列與自身在不同時(shí)間滯后的相關(guān)系數(shù)。
 

  具有較強(qiáng)季節(jié)性的時(shí)間序列通??梢杂脤⑿盘?hào)分解為季節(jié)性和長(zhǎng)期趨勢(shì)的模型很好地表示,并且這些模型可用于預(yù)測(cè)時(shí)間序列的未來(lái)值。如大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析所示,經(jīng)典的季節(jié)性分解就是這種模型的一個(gè)簡(jiǎn)單示例。一個(gè)更復(fù)雜的示例是Facebook的Prophet模型,該模型使用曲線擬合來(lái)分解時(shí)間序列,并考慮了多個(gè)時(shí)間尺度上的季節(jié)性,假日影響,突然的變化點(diǎn)和長(zhǎng)期趨勢(shì),如大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析所示。
 

  頻率
 

  當(dāng)時(shí)間序列的數(shù)據(jù)點(diǎn)在時(shí)間上均勻間隔(例如,每小時(shí),每天,每月等)時(shí),該時(shí)間序列可以與pandas的頻率相關(guān)聯(lián)。例如,讓我們使用date_range()函數(shù)來(lái)從創(chuàng)建均勻間隔的日期序列1998-03-10通過(guò)1998-03-15在每日頻率。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  所得的DatetimeIndex具有freq值為的屬性'D',指示每日頻率。大pandas的可用頻率包括每小時(shí)('H'),每天('D'),每天('B'),每周('W'),每月('M'),每季度('Q'),每年('A')等。也可以將頻率指定為任何基本頻率的倍數(shù),例如'5D'每五天一次。
 

  再舉一個(gè)例子,讓我們以每小時(shí)的頻率創(chuàng)建一個(gè)日期范圍,指定開(kāi)始日期和期間數(shù),而不是開(kāi)始日期和結(jié)束日期。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在,讓我們?cè)賮?lái)看一下opsd_daily時(shí)間序列的DatetimeIndex 。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到它沒(méi)有頻率(freq=None)。這是有道理的,因?yàn)樵撍饕菑腃SV文件中的日期序列創(chuàng)建的,而沒(méi)有為時(shí)間序列明確指定任何頻率。
 

  如果我們知道我們的數(shù)據(jù)應(yīng)處于特定頻率,則可以使用DataFrame的asfreq()方法來(lái)分配頻率。如果數(shù)據(jù)中缺少任何日期/時(shí)間,則將為這些日期/時(shí)間添加新行,這些行可以為空(NaN),也可以根據(jù)指定的數(shù)據(jù)填充方法(如正向填充或插值)進(jìn)行填充。
 

  為了了解其工作原理,讓我們創(chuàng)建一個(gè)新的DataFrame,其中僅包含Consumption2013年2月3日,6日和8日的數(shù)據(jù)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  現(xiàn)在,我們使用該asfreq()方法將DataFrame轉(zhuǎn)換為每日頻率,其中一列用于未填充的數(shù)據(jù),一列用于向前填充的數(shù)據(jù)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  在該Consumption列中,我們有原始數(shù)據(jù),NaN對(duì)于consum_sampleDataFrame 中缺少的任何日期,其值為。在該Consumption - Forward Fill列中,缺失項(xiàng)已向前填充,這意味著最后一個(gè)值將在缺失行中重復(fù),直到出現(xiàn)下一個(gè)非缺失值。
 

  如果您要進(jìn)行任何需要均勻間隔的數(shù)據(jù)且沒(méi)有任何遺漏的時(shí)間序列分析,則需要使用asfreq()該方法將時(shí)間序列轉(zhuǎn)換為指定的頻率,并使用適當(dāng)?shù)姆椒ㄌ畛渌羞z漏。
 

  重采樣
 

  將我們的時(shí)間序列數(shù)據(jù)重新采樣到較低或較高的頻率通常很有用。重采樣到較低的頻率(降采樣)通常涉及聚合操作-例如,根據(jù)每日數(shù)據(jù)計(jì)算每月的銷(xiāo)售總額。我們?cè)?a href="http://5wd995.cn/data/2637.html" target="_blank">大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析中使用的每日OPSD數(shù)據(jù)是從原始的每小時(shí)時(shí)間序列中縮減采樣的。重采樣到較高頻率(上采樣)的情況比較少見(jiàn),并且通常涉及插值或其他數(shù)據(jù)填充方法,例如,將每小時(shí)天氣數(shù)據(jù)插值到10分鐘間隔以輸入科學(xué)模型。
 

  我們將在這里著重于下采樣,探索它如何幫助我們?cè)诟鞣N時(shí)間尺度上分析我們的OPSD數(shù)據(jù)。我們使用DataFrame的resample()方法,該方法將DatetimeIndex拆分為多個(gè)時(shí)間段,并按時(shí)間段對(duì)數(shù)據(jù)進(jìn)行分組。該resample()方法返回一個(gè)Resampler對(duì)象,類(lèi)似于pandas GroupBy對(duì)象。然后,我們可以應(yīng)用的聚合方法,例如mean(),median(),sum()等,以數(shù)據(jù)組為每個(gè)時(shí)間段。
 

  例如,讓我們將數(shù)據(jù)重新采樣為每周平均時(shí)間序列。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  第一行上面,標(biāo)注2006-01-01,包含了平均中包含的所有的時(shí)間塊中的數(shù)據(jù)2006-01-01通過(guò)2006-01-07。第二行標(biāo)記為2006-01-08,包含2006-01-08通過(guò)2006-01-14時(shí)間倉(cāng)的平均數(shù)據(jù),依此類(lèi)推。默認(rèn)情況下,向下采樣的時(shí)間序列的每一行都標(biāo)有時(shí)間倉(cāng)的右邊緣。
 

  根據(jù)構(gòu)造,我們的每周時(shí)間序列的數(shù)據(jù)點(diǎn)是每日時(shí)間序列的1/7。我們可以通過(guò)比較兩個(gè)DataFrame的行數(shù)來(lái)確認(rèn)這一點(diǎn)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  讓我們Solar一起繪制一個(gè)六個(gè)月內(nèi)的每日和每周時(shí)間序列,以進(jìn)行比較。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到,每周平均時(shí)間序列比每日時(shí)間序列平滑,這是因?yàn)樵谥夭蓸又衅骄溯^高的頻率變異性。
 

  現(xiàn)在,讓我們將數(shù)據(jù)重新采樣到每月一次,匯總總和而不是均值。與使用進(jìn)行聚合mean()(將設(shè)置為將NaN所有丟失數(shù)據(jù)的任何時(shí)間段的輸出)不同,的默認(rèn)行為是sum()將輸出輸出0作為丟失數(shù)據(jù)的總和。我們使用min_count參數(shù)來(lái)更改此行為。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  您可能會(huì)注意到,每月重新采樣的數(shù)據(jù)標(biāo)有每個(gè)月的月底(右邊的條邊),而每周重新采樣的數(shù)據(jù)標(biāo)有左邊的條邊。默認(rèn)情況下,對(duì)于每月,每季度和每年的頻率,重新采樣的數(shù)據(jù)都標(biāo)記有右側(cè)bin邊緣,對(duì)于所有其他頻率,則標(biāo)記有左側(cè)bin邊緣。可以使用resample()文檔中列出的參數(shù)來(lái)調(diào)整此行為和其他各種選項(xiàng)。
 

  現(xiàn)在,通過(guò)將用電量繪制為線圖,將風(fēng)能和太陽(yáng)能發(fā)電繪制為堆疊區(qū)域圖,來(lái)探索每月的時(shí)間序列。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

 

  在這個(gè)月度時(shí)間尺度上,我們可以清楚地看到每個(gè)時(shí)間序列中的年度季節(jié)性,并且很明顯,用電量隨著時(shí)間的推移一直相當(dāng)穩(wěn)定,而風(fēng)電產(chǎn)量一直在穩(wěn)定增長(zhǎng),其中風(fēng)能+太陽(yáng)能發(fā)電量不斷增加消耗的電力份額。

  讓我們通過(guò)對(duì)年度頻率重新采樣并計(jì)算每年的比率Wind+Solar來(lái)進(jìn)一步探索Consumption。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析

 

  最后,讓我們用條形圖繪制風(fēng)電與太陽(yáng)能在年度用電量中所占的比例。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析

  我們可以看到,風(fēng)能+太陽(yáng)能生產(chǎn)占年度用電量的比例已從2012年的約15%增長(zhǎng)到2017年的約27%。
 

  卷簾窗
 

  滾動(dòng)窗口操作是時(shí)間序列數(shù)據(jù)的另一個(gè)重要轉(zhuǎn)換。類(lèi)似于下采樣,滾動(dòng)窗口中的數(shù)據(jù)分成時(shí)間窗口和并且在每個(gè)窗口中的數(shù)據(jù)被聚集以如函數(shù)mean(),median(),sum()等。然而,不同于下采樣,其中,所述時(shí)間倉(cāng)不重疊,并且所述輸出是在一個(gè)較低的頻率與輸入頻率相比,滾動(dòng)窗口重疊,并且以與數(shù)據(jù)相同的頻率“滾動(dòng)”,因此變換后的時(shí)間序列與原始時(shí)間序列的頻率相同。
 

  默認(rèn)情況下,窗口中的所有數(shù)據(jù)點(diǎn)在聚合中的權(quán)重均相等,但是可以通過(guò)指定窗口類(lèi)型(例如高斯,三角形和其他)來(lái)更改此值。我們將在此處繼續(xù)使用標(biāo)準(zhǔn)的等權(quán)重窗口。
 

  讓我們使用該rolling()方法來(lái)計(jì)算每日數(shù)據(jù)的7天滾動(dòng)平均值。我們使用center=True參數(shù)在每個(gè)窗口的中點(diǎn)標(biāo)記標(biāo)簽,因此滾動(dòng)窗口為:
 

  1)2006-01-01至2006-01-07-標(biāo)為2006-01-04

  2)2006-01-02至2006-01-08-標(biāo)為2006-01-05

  3)2006-01-03至2006-01-09-標(biāo)為2006-01-06

  4)等等…

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到第一個(gè)非缺失滾動(dòng)平均值為on 2006-01-04,因?yàn)檫@是第一個(gè)滾動(dòng)窗口的中點(diǎn)。
 

  為了可視化滾動(dòng)平均值和重采樣之間的差異,讓我們更新我們較早的2017年1月至6月太陽(yáng)能發(fā)電量圖,以包括7天滾動(dòng)平均值以及每周平均重采樣時(shí)間序列和原始每日數(shù)據(jù)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到,滾動(dòng)平均時(shí)間序列中的數(shù)據(jù)點(diǎn)與每日數(shù)據(jù)具有相同的間隔,但是由于平均了較高的頻率可變性,因此曲線更加平滑。在滾動(dòng)平均時(shí)間序列中,高峰和低谷往往與每日時(shí)間序列的高峰和低谷緊密對(duì)齊。相反,由于重新采樣的時(shí)間序列具有較粗的粒度,因此每周重新采樣的時(shí)間序列中的高峰和低谷與每日時(shí)間序列的排列不太緊密。
 

  發(fā)展趨勢(shì)
 

  除了較高的頻率可變性(例如季節(jié)性和噪聲)以外,時(shí)間序列數(shù)據(jù)通常還表現(xiàn)出一些緩慢的漸進(jìn)可變性。可視化這些趨勢(shì)的一種簡(jiǎn)單方法是在不同的時(shí)間范圍內(nèi)使用滾動(dòng)方式。
 

  滾動(dòng)平均值趨向于通過(guò)平均遠(yuǎn)高于窗口大小的頻率上的變化并在等于窗口大小的時(shí)間尺度上平均任何季節(jié)性來(lái)平滑時(shí)間序列。這允許探索數(shù)據(jù)中的低頻變化。由于我們的用電時(shí)間序列具有每周和每年的季節(jié)性,因此讓我們來(lái)看一下這兩個(gè)時(shí)間尺度上的滾動(dòng)平均值。

 

  我們已經(jīng)計(jì)算了7天的滾動(dòng)平均值,所以現(xiàn)在讓我們計(jì)算OPSD數(shù)據(jù)的365天的滾動(dòng)平均值。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  讓我們繪制7天和365天的滾動(dòng)平均用電量以及每日時(shí)間序列。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  我們可以看到,為期7天的滾動(dòng)平均值已使所有的每周季節(jié)性都變得平滑,同時(shí)保留了年度季節(jié)性。7天的滾動(dòng)平均值顯示,雖然冬季的用電量通常較高,而夏季則較低,但是每個(gè)冬季在12月底和1月初的節(jié)假日期間,其用電量會(huì)急劇下降數(shù)周。
 

  縱觀365天的滾動(dòng)平均時(shí)間序列,我們可以看到電力消耗的長(zhǎng)期趨勢(shì)相當(dāng)平穩(wěn),在2009年和2012-2013年之間有幾個(gè)異常的低電量消耗時(shí)期。
 

  現(xiàn)在讓我們看一下風(fēng)能和太陽(yáng)能生產(chǎn)的趨勢(shì)。

大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
大數(shù)據(jù)分析如何使用pandas進(jìn)行時(shí)間序列分析
 

  隨著德國(guó)繼續(xù)擴(kuò)大在這些領(lǐng)域的能力,我們可以看到太陽(yáng)能發(fā)電的增長(zhǎng)趨勢(shì)很小,而風(fēng)力發(fā)電的增長(zhǎng)趨勢(shì)很大。
 

  總結(jié)和進(jìn)一步閱讀
 

  我們已經(jīng)學(xué)習(xí)了如何使用諸如基于時(shí)間的索引,重采樣和滾動(dòng)窗口之類(lèi)的技術(shù)來(lái)處理,分析和可視化pandas中的時(shí)間序列數(shù)據(jù)。將這些技術(shù)應(yīng)用于我們的OPSD數(shù)據(jù)集,我們獲得了有關(guān)德國(guó)電力消耗和生產(chǎn)的季節(jié)性,趨勢(shì)和其他有趣特征的見(jiàn)解。
 

  我們尚未涉及的其他潛在有用主題包括時(shí)區(qū)處理和時(shí)移。如果您想了解更多有關(guān)在pandas中使用時(shí)間序列數(shù)據(jù)的信息。如果您對(duì)使用時(shí)間序列數(shù)據(jù)進(jìn)行預(yù)測(cè)和機(jī)器學(xué)習(xí)感興趣,我們將在以后的文章中介紹這些主題,請(qǐng)繼續(xù)關(guān)注!



 

預(yù)約申請(qǐng)免費(fèi)試聽(tīng)課

填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢(qián)不夠?可先就業(yè)掙錢(qián)后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ 5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖