簡體   English   中英

如何按一天中的小時分組時間序列?

[英]How do I group a time series by hour of day?

我有一個時間序列,我想按一天中的小時(無論日期如何)對行進行分組,並將其可視化為箱線圖。 因此,我希望從第1個小時開始,然后從第2個小時到第3個小時,依次類推,進行24次框線圖繪制。

我看到此工作的方式是將數據集分成24個系列(一天中的每個小時1個),為每個系列創建一個箱形圖,然后在相同的軸上進行繪制。

我能想到的唯一方法是手動選擇每個小時之間的所有值,有沒有更快的方法?

一些樣本數據:

Date    Actual Consumption
2018-01-01 00:00:00 47.05
2018-01-01 00:15:00 46
2018-01-01 00:30:00 44
2018-01-01 00:45:00 45
2018-01-01 01:00:00 43.5
2018-01-01 01:15:00 43.5
2018-01-01 01:30:00 43
2018-01-01 01:45:00 42.5
2018-01-01 02:00:00 43
2018-01-01 02:15:00 42.5
2018-01-01 02:30:00 41
2018-01-01 02:45:00 42.5
2018-01-01 03:00:00 42.04
2018-01-01 03:15:00 41.96
2018-01-01 03:30:00 44
2018-01-01 03:45:00 44
2018-01-01 04:00:00 43.54
2018-01-01 04:15:00 43.46
2018-01-01 04:30:00 43.5
2018-01-01 04:45:00 43
2018-01-01 05:00:00 42.04

到目前為止,這是我嘗試過的:

zero = df.between_time('00:00', '00:59')
one = df.between_time('01:00', '01:59')
two = df.between_time('02:00', '02:59')

然后我將在相同的軸上為每個圖繪制一個箱線圖。 但是,一天24小時都執行此操作非常繁瑣。

這是我想要的輸出類型: https : //www.researchgate.net/figure/Boxplot-of-the-NOx-data-by-hour-of-the-day_fig1_24054015

有兩個步驟可以實現此目的:

  1. 將實際時間轉換為日期時間:

     df.Actual = pd.to_datetime(df.Actual) 
  2. 按小時分組:

     df.groupby([df.Date, df.Actual.dt.hour+1]).Consumption.sum().reset_index() 

我以為您想對消費進行匯總(除非您希望擁有平均數或僅需更改即可)。 注意:小時+1,因此它將從1開始而不是0(如果您希望0是午夜,則將其刪除)。

預期結果:

    Date    Actual  Consumption
0   2018-01-01  1   182.05
1   2018-01-01  2   172.50
2   2018-01-01  3   169.00
3   2018-01-01  4   172.00
4   2018-01-01  5   173.50
5   2018-01-01  6   42.04

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM