Comment regrouper par trimestre dans Pandas DataFrame (avec exemple)
Vous pouvez utiliser la syntaxe de base suivante pour regrouper les lignes par trimestre dans un DataFrame pandas :
#convert date column to datetime df['date'] = pd.to_datetime(df['date']) #calculate sum of values, grouped by quarter df.groupby(df['date'].dt.to_period('Q'))['values'].sum()
Cette formule particulière regroupe les lignes par trimestre dans la colonne de date et calcule la somme de la colonne de valeurs dans le DataFrame.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : Comment regrouper par trimestre dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui montre les ventes réalisées par une entreprise à différentes dates :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'date': pd.date_range(start='1/1/2022', freq='M', periods=12),
'sales': [6, 8, 10, 5, 4, 8, 8, 3, 5, 14, 8, 3]})
#view DataFrame
print(df)
date sales
0 2022-01-31 6
1 2022-02-28 8
2 2022-03-31 10
3 2022-04-30 5
4 2022-05-31 4
5 2022-06-30 8
6 2022-07-31 8
7 2022-08-31 3
8 2022-09-30 5
9 2022-10-31 14
10 2022-11-30 8
11 2022-12-31 3
Connexe : Comment créer une plage de dates dans Pandas
On peut utiliser la syntaxe suivante pour calculer la somme des ventes regroupées par trimestre :
#convert date column to datetime and subtract one week df['date'] = pd.to_datetime(df['date']) #calculate sum of sales, grouped by quarter df.groupby(df['date'].dt.to_period('Q'))['sales'].sum() date 2022Q1 24 2022Q2 17 2022Q3 16 2022Q4 25 Freq: Q-DEC, Name: sales, dtype: int64
Voici comment interpréter le résultat :
- Au total, 24 ventes ont été réalisées au cours du premier trimestre.
- Au total, 17 ventes ont été réalisées au cours du deuxième trimestre.
- Au total, 16 ventes ont été réalisées au cours du troisième trimestre.
- Au total, 25 ventes ont été réalisées au cours du quatrième trimestre.
Nous pouvons utiliser une syntaxe similaire pour calculer une autre métrique, regroupée par trimestre.
Par exemple, nous pourrions plutôt calculer la valeur maximale des ventes, regroupées par trimestre :
#convert date column to datetime df['date'] = pd.to_datetime(df['date']) #calculate max of sales, grouped by quarter df.groupby(df['date'].dt.to_period('Q'))['sales'].max() date 2022Q1 10 2022Q2 8 2022Q3 8 2022Q4 14 Freq: Q-DEC, Name: sales, dtype: int64
Voici comment interpréter le résultat :
- Les ventes maximales sur un mois individuel au cours du premier trimestre étaient de 10 .
- Les ventes maximales sur un mois individuel au cours du deuxième trimestre étaient de 8 .
- Les ventes maximales sur un mois individuel au cours du troisième trimestre étaient de 8 .
- Les ventes maximales sur un mois individuel au cours du quatrième trimestre étaient de 14 .
Remarque : Vous pouvez trouver la documentation complète de l’opération groupby dans pandas ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment regrouper par mois dans Pandas DataFrame
Comment regrouper par semaine dans Pandas DataFrame
Pandas : Comment utiliser Groupby et compter avec condition