Come raggruppare i dati per ora in panda (con esempio)


È possibile utilizzare la seguente sintassi per raggruppare i dati in base all’ora ed eseguire l’aggregazione nei panda:

 df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

Questo particolare esempio raggruppa i valori per ora in una colonna denominata Ora e quindi calcola la somma dei valori nella colonna Vendite per ogni ora.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: raggruppare i dati per ora in Pandas

Supponiamo di avere il seguente DataFrame panda che mostra il numero di vendite effettuate in diversi momenti della giornata per un negozio:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' time ': ['2022-01-01 01:14:00', '2022-01-01 01:24:15',
                            '2022-01-01 02:52:19', '2022-01-01 02:54:00',
                            '2022-01-01 04:05:10', '2022-01-01 05:35:09'],
                   ' sales ': [18, 20, 15, 14, 10, 9]})

#convert date column to datetime
df[' time '] = pd. to_datetime (df[' time '])

#view DataFrame
print (df)

                 time sales
0 2022-01-01 01:14:00 18
1 2022-01-01 01:24:15 20
2 2022-01-01 02:52:19 15
3 2022-01-01 02:54:00 14
4 2022-01-01 04:05:10 10
5 2022-01-01 05:35:09 9

Possiamo utilizzare la seguente sintassi per raggruppare la colonna temporale per ore e calcolare la somma delle vendite per ogni ora:

 #group by hours in time column and calculate sum of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . sum ()

time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64

Dal risultato possiamo vedere:

  • Nella prima ora sono state effettuate 38 vendite in totale.
  • Nella seconda ora sono state effettuate complessivamente 29 vendite.
  • Nella quarta ora sono state effettuate 10 vendite in totale.
  • Durante la quinta ora sono state effettuate 9 vendite in totale.

Tieni presente che possiamo anche eseguire un’altra aggregazione.

Ad esempio, potremmo calcolare il numero medio di vendite all’ora:

 #group by hours in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour ]). dirty . mean ()

time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64

Se lo desideriamo, possiamo anche raggruppare per ore e minuti.

Ad esempio, il codice seguente mostra come calcolare la somma delle vendite, raggruppate per ore e minuti:

 #group by hours and minutes in time column and calculate mean of sales
df. groupby ([df[' time ']. dt . hour , df[' time ']. dt . minute ]). dirty . mean ()

time time
1 14 18
      24 20
2 52 15
      54 14
4 5 10
5 35 9
Name: sales, dtype: int64

Dal risultato possiamo vedere:

  • Il numero medio di vendite nell’arco di 1 ora e 14 minuti è stato di 18 .
  • Il numero medio di vendite durante 1 ora e 23 minuti è stato di 20 .
  • Il numero medio di vendite nell’arco di 2 ore e 52 minuti è stato di 15 .

E così via.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come creare un intervallo di date in Pandas
Come estrarre il mese dalla data in Pandas
Come convertire il timestamp in data/ora in Pandas

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *