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