在Pandas中通過(guò)時(shí)間頻率來(lái)匯總數(shù)據(jù)的三種常用方法
當(dāng)我們的數(shù)據(jù)涉及日期和時(shí)間時(shí),分析隨時(shí)間變化變得非常重要。Pandas提供了一種方便的方法,可以按不同的基于時(shí)間的間隔(如分鐘、小時(shí)、天、周、月、季度或年)對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分組。
在Pandas中,有幾種基于日期對(duì)數(shù)據(jù)進(jìn)行分組的方法。我們將使用這些虛擬數(shù)據(jù)進(jìn)行演示:
一些最常用的時(shí)間序列數(shù)據(jù)分組方法是:
1、resample
pandas中的resample 方法用于對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行重采樣,可以將數(shù)據(jù)的頻率更改為不同的間隔。例如將每日數(shù)據(jù)重新采樣為每月數(shù)據(jù)。Pandas中的resample方法可用于基于時(shí)間間隔對(duì)數(shù)據(jù)進(jìn)行分組。它接收f(shuō)requency參數(shù)并返回一個(gè)Resampler對(duì)象,該對(duì)象可用于應(yīng)用各種聚合函數(shù),如mean、sum或count。resample()只在DataFrame的索引為日期或時(shí)間類(lèi)型時(shí)才對(duì)數(shù)據(jù)進(jìn)行重新采樣。
在本例中,我們首先將' date '列轉(zhuǎn)換為日期類(lèi)型,然后將其設(shè)置為DataFrame的索引。然后使用重采樣方法按月分組數(shù)據(jù),并計(jì)算每個(gè)月的“sales”列的平均值。結(jié)果是一個(gè)新的DF,每個(gè)月有一行,還包含該月“sales”列的平均值。
2、使用Grouper
pandas的Grouper 函數(shù)可以與 groupby 方法一起使用,以根據(jù)不同的時(shí)間間隔(例如分鐘、小時(shí)、天、周、月、季度或年)對(duì)數(shù)據(jù)進(jìn)行分組。Grouper 包含了key (包含日期的列)、frequency (分組依據(jù)的間隔)、closed (關(guān)閉間隔的一側(cè))和label (標(biāo)記間隔)等參數(shù)。Pandas 中的 Grouper 函數(shù)提供了一種按不同時(shí)間間隔(例如分鐘、小時(shí)、天、周、月、季度或年)對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分組的便捷方法。通過(guò)與Pandas 中的 groupby 方法 一起使用,可以根據(jù)不同的時(shí)間間隔對(duì)時(shí)間序列數(shù)據(jù)進(jìn)行分組和匯總。
Grouper函數(shù)接受以下參數(shù):
- key:時(shí)間序列數(shù)據(jù)的列名。
- freq:時(shí)間間隔的頻率,如“D”表示日,“W”表示周,“M”表示月,等等。
- closed:間隔是否應(yīng)該在右側(cè)(右)、左側(cè)(左)或兩側(cè)(兩個(gè))閉合。
- label :用它的結(jié)束(右)或開(kāi)始(左)日期標(biāo)記間隔。
- Grouper函數(shù)和groupby一起按月間隔對(duì)數(shù)據(jù)進(jìn)行分組:
3、dt 訪問(wèn)器和 groupby
Pandas中的dt訪問(wèn)器可以從日期和時(shí)間類(lèi)列中提取各種屬性,例如年、月、日等。所以我們可以使用提取的屬性根據(jù)與日期相關(guān)的信息對(duì)數(shù)據(jù)進(jìn)行分組。
在Pandas中,使用dt訪問(wèn)器從DataFrame中的date和time對(duì)象中提取屬性,然后使用groupby方法將數(shù)據(jù)分組為間隔。
總結(jié)
這三種常用的方法可以匯總時(shí)間序列數(shù)據(jù),所有方法都相對(duì)容易使用。在時(shí)間復(fù)雜度方面,所有方法對(duì)于中小型數(shù)據(jù)集都是有效的。對(duì)于較大的數(shù)據(jù)集,resample的性能更好,因?yàn)樗槍?duì)時(shí)間索引進(jìn)行了優(yōu)化。而,Grouper和dt提供了更大的靈活性,可以進(jìn)行更復(fù)雜的分組操作??梢愿鶕?jù)自己喜歡的語(yǔ)法或者特定的需求選擇一種方法使用。