Comment regrouper par semaine dans Pandas DataFrame (avec exemple)



Vous pouvez utiliser la syntaxe de base suivante pour regrouper les lignes par semaine dans un DataFrame pandas :

#convert date column to datetime and subtract one week
df['date'] = pd.to_datetime(df['date']) - pd.to_timedelta(7, unit='d')

#calculate sum of values, grouped by week
df.groupby([pd.Grouper(key='date', freq='W')])['values'].sum()

Cette formule particulière regroupe les lignes par semaine dans la colonne de date et calcule la somme des valeurs pour la colonne de valeurs dans le DataFrame.

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : Comment regrouper par semaine chez 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/5/2022', freq='D', periods=15),
                   'sales': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print(df)

         date  sales
0  2022-01-05      6
1  2022-01-06      8
2  2022-01-07      9
3  2022-01-08      5
4  2022-01-09      4
5  2022-01-10      8
6  2022-01-11      8
7  2022-01-12      3
8  2022-01-13      5
9  2022-01-14      9
10 2022-01-15      8
11 2022-01-16      3
12 2022-01-17      4
13 2022-01-18      7
14 2022-01-19      7

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 semaine :

#convert date column to datetime and subtract one week
df['date'] = pd.to_datetime(df['date']) - pd.to_timedelta(7, unit='d')

#calculate sum of values, grouped by week
df.groupby([pd.Grouper(key='date', freq='W')])['sales'].sum()

date
2022-01-02    32
2022-01-09    44
2022-01-16    18
Freq: W-SUN, Name: sales, dtype: int64

Voici comment interpréter le résultat :

  • Il y a eu 32 ventes au total au cours de la semaine commençant le lendemain du 1/2/2022.
  • Il y a eu 44 ventes au total au cours de la semaine commençant le lendemain du 01/09/2022.
  • Au total, 18 ventes ont été réalisées au cours de la semaine commençant le lendemain du 16/01/2022.

Il convient de noter que par défaut, pandas suppose que la semaine commence le lendemain du dimanche ( W-SUN ).

Cependant, selon la documentation , vous pouvez modifier cette valeur pour Freq .

Par exemple, vous pouvez spécifier Freq=W-MON si vous souhaitez que chaque semaine commence le lendemain du lundi (c’est-à-dire le mardi).

Nous pouvons utiliser une syntaxe similaire pour calculer le maximum des valeurs de ventes regroupées par semaine :

#convert date column to datetime and subtract one week
df['date'] = pd.to_datetime(df['date']) - pd.to_timedelta(7, unit='d')

#calculate max of values, grouped by week
df.groupby([pd.Grouper(key='date', freq='W')])['sales'].max()

date
2022-01-02    9
2022-01-09    9
2022-01-16    7
Freq: W-SUN, Name: sales, dtype: int64

Voici comment interpréter le résultat :

  • Le maximum de ventes par jour au cours de la semaine commençant le lendemain du 02/01/2022 était de 9 .
  • Le nombre maximum de ventes par jour au cours de la semaine commençant le lendemain du 9/01/2022 était de 9 .
  • Le nombre maximum de ventes par jour au cours de la semaine commençant le lendemain du 16/01/2022 était de 7 .

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 jour dans Pandas DataFrame
Comment utiliser Groupby et compter avec condition dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *