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

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算

時(shí)間:2020-12-24來(lái)源:lb577.com點(diǎn)擊量:作者:Sissi
時(shí)間:2020-12-24點(diǎn)擊量:作者:Sissi



一、簡(jiǎn)介
 

  我們?cè)谑褂胮andas分析處理時(shí)間序列數(shù)據(jù)時(shí),經(jīng)常需要對(duì)原始時(shí)間粒度下的數(shù)據(jù),按照不同的時(shí)間粒度進(jìn)行分組聚合運(yùn)算,譬如基于每個(gè)交易日的股票收盤(pán)價(jià),計(jì)算每個(gè)月的最低和最高收盤(pán)價(jià)。
 

  而在pandas中,針對(duì)不同的應(yīng)用場(chǎng)景,我們可以使用resample()、groupby()以及Grouper()來(lái)非常高效快捷地完成此類(lèi)任務(wù)。
 

二、在pandas中進(jìn)行時(shí)間分組聚合
 

  在pandas中根據(jù)具體任務(wù)場(chǎng)景的不同,對(duì)時(shí)間序列進(jìn)行分組聚合可通過(guò)以下兩類(lèi)方式實(shí)現(xiàn):
 

  2.1 利用resample()對(duì)時(shí)序數(shù)據(jù)進(jìn)行分組聚合

  resample原始的意思是「重采樣」,可分為「上采樣」與「下采樣」,而我們通常情況下使用的都是「下采樣」,也就是從高頻的數(shù)據(jù)中按照一定規(guī)則計(jì)算出更低頻的數(shù)據(jù),就像我們一開(kāi)始說(shuō)的對(duì)每日數(shù)據(jù)按月匯總那樣。
 

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  如果你熟悉pandas中的groupby()分組運(yùn)算,那么你就可以很快地理解resample()的使用方式,它本質(zhì)上就是在對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行“分組”,最基礎(chǔ)的參數(shù)為rule,用于設(shè)置按照何種方式進(jìn)行重采樣,就像下面的例子那樣:
 

  可以看到,在上面的例子中,我們對(duì)index為日期時(shí)間類(lèi)型的DataFrame應(yīng)用resample()方法,傳入的參數(shù)'M'是resample第一個(gè)位置上的參數(shù)rule,用于確定時(shí)間窗口的規(guī)則,譬如這里的字符串'M'就代表「月且聚合結(jié)果中顯示對(duì)應(yīng)月的最后一天」,常用的固化的時(shí)間窗口規(guī)則如下表所示:

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  且這些規(guī)則都可以在前面添加數(shù)字實(shí)現(xiàn)倍數(shù)效果:

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  且resample()非常貼心之處在于它會(huì)自動(dòng)幫你對(duì)齊到規(guī)整的時(shí)間單位上,譬如我們這里只有交易日才會(huì)有記錄,如果我們?cè)O(shè)置的時(shí)間單位下無(wú)對(duì)應(yīng)記錄,也會(huì)為你保留帶有缺失值記錄的時(shí)間點(diǎn):

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  而通過(guò)參數(shù)closed我們可以為細(xì)粒度的時(shí)間單位設(shè)置區(qū)間閉合方式,譬如我們以2日為單位,將closed設(shè)置為'right'時(shí),從第一行記錄開(kāi)始計(jì)算所落入的時(shí)間窗口時(shí),其對(duì)應(yīng)為時(shí)間窗口的右邊界,從而影響后續(xù)所有時(shí)間單元的劃分方式:

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  而即使你的數(shù)據(jù)框index不是日期時(shí)間類(lèi)型,也可以使用參數(shù)on來(lái)傳入日期時(shí)間列名實(shí)現(xiàn)同樣的效果。
 

  2.2 利用groupby()+Grouper()實(shí)現(xiàn)混合分組
 

  有些情況下,我們不僅僅需要利用時(shí)間類(lèi)型列來(lái)分組,也可能需要包含時(shí)間類(lèi)型在內(nèi)的多個(gè)列共同進(jìn)行分組,這種情況下我們就可以使用到Grouper()。
 

  它通過(guò)參數(shù)freq傳入等價(jià)于resample()中rule的參數(shù),并利用參數(shù)key指定對(duì)應(yīng)的時(shí)間類(lèi)型列名稱,但是可以幫助我們創(chuàng)建分組規(guī)則后傳入groupby()中:
 

如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
如何使用pandas中的時(shí)序數(shù)據(jù)分組運(yùn)算
 

  且在此種混合分組模式下,我們可以非常方便的配合apply、transform等操作,這里就不再贅述。



 

預(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/ lb577.com 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

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

網(wǎng)站地圖