Utiliser des méthodes de resampling pour regrouper les données temporelles
Le resampling permet de modifier la fréquence des données temporelles, en les regroupant selon des intervalles spécifiques (comme quotidien, mensuel, annuel, etc.). Cela permet de transformer, agréger ou interpoler des séries temporelles pour mieux les analyser ou les visualiser. Dans pandas, cela se fait avec la méthode .resample() en combinaison avec des fonctions comme sum(), mean(), max(), etc. La resampling peut être effectuée sur des séries temporelles indexées par une date ou un timestamp.
Fonctions :
-
df.resample().sum()
La méthode resample() est utilisée pour modifier la fréquence des données temporelles dans un DataFrame. Elle permet de regrouper les données selon des intervalles temporels spécifiques (par exemple, quotidien, mensuel, annuel, etc.) et d'appliquer une fonction d'agrégation comme sum(), mean(), count(), etc. Cette méthode est particulièrement utile lorsqu'on travaille avec des séries temporelles et qu'on souhaite ajuster la granularité des données. Le paramètre 'D' dans resample('D') indique que les données seront regroupées par jour. On peut remplacer 'D' par d'autres fréquences comme 'M' pour mensuel, 'A' pour annuel, etc.
Importation :
import pandas as pd
Attributs :
Paramètre Description rule
La règle de fréquence à utiliser pour le resampling. Par exemple, 'D'
pour quotidien,'M'
pour mensuel,'A'
pour annuel, etc.how
ouaggfunc
La fonction d'agrégation à appliquer sur les données groupées, comme sum()
,mean()
,min()
,max()
, etc.on
La colonne sur laquelle appliquer le resampling. Si non spécifié, le resampling est effectué sur l'index, supposé être une date ou un horodatage. closed
Définit si la période est fermée à gauche ou à droite. Par défaut, elle est fermée à droite. label
Définit si le label de la période doit être aligné au début ou à la fin de la période. Par défaut, le label est aligné à la fin. Exemple de code :
import pandas as pd # Création d'un DataFrame exemple avec une colonne 'date' data = { 'date': ['2025-01-01', '2025-01-01', '2025-01-02', '2025-01-02', '2025-01-03'], 'ventes': [100, 150, 200, 250, 300] } df = pd.DataFrame(data) # Convertir la colonne 'date' en datetime df['date'] = pd.to_datetime(df['date']) # Définir la colonne 'date' comme index df.set_index('date', inplace=True) # Utilisation de resample pour regrouper les données par jour et appliquer sum df_resampled = df.resample('D').sum() # Affichage du DataFrame après resampling print(df_resampled)
Explication du code :
-
df.resample('D')
:
La méthoderesample('D')
effectue un regroupement des données par jour (ou selon la fréquence spécifiée). L'index du DataFrame doit être de typedatetime
pour que cette méthode fonctionne correctement. -
.sum()
:
Après avoir défini la fréquence avecresample()
, la méthodesum()
est utilisée pour agréger les données au niveau de chaque groupe. Cela signifie que toutes les valeurs dans chaque groupe seront additionnées pour créer une seule valeur pour chaque jour. -
Résultat :
Le résultat sera un DataFrame avec une nouvelle granularité, où chaque ligne représente la somme des valeurs sur une période spécifiée (dans cet exemple, chaque jour).
🔹 Remarques pratiques
-
Fréquences de resampling :
La méthoderesample()
supporte une large variété de fréquences comme'D'
(quotidien),'M'
(mensuel),'Y'
(annuel),'W'
(hebdomadaire), et bien d'autres. Ces fréquences sont très utiles pour ajuster la granularité de l'analyse en fonction des besoins de votre projet. -
Gérer les valeurs manquantes :
Si certaines périodes n'ont pas de données (par exemple, un jour sans ventes), vous pouvez les gérer en utilisant des fonctions commefillna()
ouffill()
pour remplir les valeurs manquantes après un resampling. -
Fonctions d'agrégation :
Outresum()
, vous pouvez utiliser d'autres fonctions d'agrégation commemean()
,count()
,min()
,max()
, ou même des fonctions personnalisées pour agréger les données après un resampling. -
Index temporel :
Assurez-vous que l'index de votre DataFrame est un objet de typedatetime
. Si ce n'est pas le cas, vous pouvez utiliserpd.to_datetime()
pour le convertir avant d'appliquerresample()
. -
Optimisation des performances :
Le resampling peut être coûteux en termes de temps de traitement si vous travaillez avec de très grandes séries temporelles. Utilisez des agrégations efficaces et réduisez la taille des fenêtres temporelles si nécessaire pour améliorer les performances.
-