Comment regrouper les données par heure dans Pandas (avec exemple)
Vous pouvez utiliser la syntaxe suivante pour regrouper les données par heure et effectuer une agrégation dans les pandas :
df.groupby([df['time'].dt.hour]).sales.sum()
Cet exemple particulier regroupe les valeurs par heure dans une colonne appelée heure , puis calcule la somme des valeurs dans la colonne ventes pour chaque heure.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : regrouper les données par heure dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui montre le nombre de ventes réalisées à différents moments de la journée pour un magasin :
import pandas as pd #create DataFrame 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
Nous pouvons utiliser la syntaxe suivante pour regrouper la colonne de temps par heures et calculer la somme des ventes pour chaque heure :
#group by hours in time column and calculate sum of sales
df.groupby([df['time'].dt.hour]).sales.sum()
time
1 38
2 29
4 10
5 9
Name: sales, dtype: int64
À partir du résultat, nous pouvons voir :
- Au total, 38 ventes ont été réalisées au cours de la première heure.
- Au total, 29 ventes ont été réalisées au cours de la deuxième heure.
- Au total, 10 ventes ont été réalisées au cours de la quatrième heure.
- Au total, 9 ventes ont été réalisées au cours de la cinquième heure.
Notez que nous pouvons également effectuer une autre agrégation.
Par exemple, nous pourrions calculer le nombre moyen de ventes par heure :
#group by hours in time column and calculate mean of sales
df.groupby([df['time'].dt.hour]).sales.mean()
time
1 19.0
2 14.5
4 10.0
5 9.0
Name: sales, dtype: float64
Nous pouvons également regrouper par heures et minutes si nous le souhaitons.
Par exemple, le code suivant montre comment calculer la somme des ventes, regroupées par heures et minutes :
#group by hours and minutes in time column and calculate mean of sales
df.groupby([df['time'].dt.hour, df['time'].dt.minute]).sales.mean()
time time
1 14 18
24 20
2 52 15
54 14
4 5 10
5 35 9
Name: sales, dtype: int64
À partir du résultat, nous pouvons voir :
- Le nombre moyen de ventes sur 1h14 était de 18 .
- Le nombre moyen de ventes pendant 1h23 était de 20 .
- Le nombre moyen de ventes sur 2h52 était de 15 .
Et ainsi de suite.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment créer une plage de dates dans Pandas
Comment extraire le mois de la date dans Pandas
Comment convertir l’horodatage en date/heure dans Pandas