Fenêtre glissante avec une taille variable (dynamique)
Une fenêtre glissante avec une taille variable (dynamique) ajuste la taille de la fenêtre d’agrégation en fonction de certaines conditions ou critères, contrairement à une taille fixe. Par exemple, la taille de la fenêtre pourrait être modifiée en fonction de la valeur des données elles-mêmes ou d’un autre critère externe. Cela permet de mieux s’adapter aux variations des séries temporelles ou d’autres données où une taille de fenêtre constante ne serait pas optimale pour toutes les périodes ou segments.
Fonctions :
-
rolling(window=pd.Timedelta())
L'utilisation d'une fenêtre glissante avec une taille dynamique permet d'effectuer des calculs sur des périodes qui ne sont pas forcément définies par un nombre fixe de lignes, mais plutôt par une durée spécifiée. Par exemple, une fenêtre glissante de 3 jours peut être appliquée avec pd.Timedelta('3D'). Cette fonctionnalité est utile pour travailler avec des données temporelles, où la durée, plutôt que le nombre de points, détermine la fenêtre d'analyse.
Importation :
import pandas as pd
Attributs :
Paramètre Description window
Une durée spécifiée avec pd.Timedelta()
, comme'3D'
pour 3 jours ou'1H'
pour 1 heure, définissant la période sur laquelle l'opération sera effectuée.aggfunc
La fonction d'agrégation à appliquer. Par exemple, mean()
pour la moyenne,sum()
pour la somme, etc.min_periods
Le nombre minimum d'observations non-nulles nécessaires dans la fenêtre pour calculer le résultat. Par défaut, il est égal à la taille de la fenêtre. axis
L'axe sur lequel appliquer l'opération (par défaut, 0
pour les lignes).closed
Définit si la fenêtre est fermée à gauche, à droite, ou les deux. Par défaut, elle est ouverte à droite. Exemple de code :
import pandas as pd # Création d'un DataFrame exemple avec des dates data = { 'date': ['2025-01-01', '2025-01-03', '2025-01-05', '2025-01-07', '2025-01-10'], 'ventes': [100, 150, 200, 250, 300] } df = pd.DataFrame(data) # Conversion de la colonne 'date' en datetime df['date'] = pd.to_datetime(df['date']) # Définition de 'date' comme index pour le calcul de la fenêtre glissante df.set_index('date', inplace=True) # Application de la moyenne mobile avec une fenêtre glissante de 3 jours df['moyenne_rolling'] = df['ventes'].rolling(window=pd.Timedelta('3D')).mean() # Affichage du DataFrame après application de la moyenne mobile print(df)
Explication du code :
-
Fenêtre glissante avec
rolling(window=pd.Timedelta('3D'))
:
Ici, la taille de la fenêtre n'est pas spécifiée en nombre d'éléments, mais plutôt en durée. Par exemple,pd.Timedelta('3D')
représente une fenêtre de 3 jours. La méthoderolling()
appliquera cette fenêtre de 3 jours sur les valeurs temporelles de la colonne'colonne'
. -
Agrégation avec
mean()
:
La fonctionmean()
est utilisée pour calculer la moyenne des valeurs sur la fenêtre glissante de 3 jours. Chaque valeur dans la colonne'moyenne_rolling'
est la moyenne des valeurs sur les 3 jours précédents à chaque point. -
Fenêtre dynamique en fonction de la durée :
L'utilisation depd.Timedelta()
permet de définir des fenêtres dynamiques basées sur du temps. Contrairement aux fenêtres basées sur un nombre fixe de lignes, ici la fenêtre s'ajuste en fonction des dates. Cela est utile lorsqu'on travaille avec des séries temporelles irrégulières où la fréquence des données n'est pas constante.
🔹 Remarques pratiques
-
Fenêtre basée sur du temps :
Contrairement aux fenêtres fixes en nombre de lignes, ici, la fenêtre est déterminée par la durée ('3D'
pour 3 jours). Cela peut être particulièrement utile pour des séries temporelles où les données sont irrégulières (par exemple, des données horaires ou quotidiennes). -
Applications :
Ce type de fenêtre est souvent utilisé dans les séries temporelles pour calculer des moyennes mobiles sur des périodes définies par des dates précises. Par exemple, une analyse de la moyenne des ventes sur les 3 derniers jours. -
Comportement sur les données manquantes :
Si une donnée manque dans la plage de la fenêtre définie, cela peut affecter le calcul de la statistique. Si une valeur n'existe pas pour une période donnée, la moyenne ou autre agrégation sera basée sur les données disponibles. -
Performance :
Les fenêtres basées sur des durées peuvent être plus lentes à calculer sur des grandes séries temporelles, surtout si elles sont irrégulières, par rapport aux fenêtres basées sur un nombre fixe de lignes.
-