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 :
La ligne
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
pour simplifier son utilisation dans le code.Création d'un DataFrame exemple avec des dates
Un DataFrame nommé
df
est créé avec les colonnesdate
etventes
. La colonnedate
contient des dates sous forme de chaînes, et la colonneventes
contient des chiffres représentant les ventes associées à chaque date.Conversion de la colonne 'date' en datetime
La méthode
pd.to_datetime(df['date'])
est utilisée pour convertir la colonnedate
en format datetime. Cela permet de traiter correctement les dates pour les calculs qui suivent.Définition de 'date' comme index pour le calcul de la fenêtre glissante
La méthode
set_index('date', inplace=True)
définit la colonnedate
comme index du DataFrame. Cela est nécessaire pour effectuer des opérations basées sur des dates, telles que la fenêtre glissante temporelle.Application de la moyenne mobile avec une fenêtre glissante de 3 jours
La méthode
rolling(window=pd.Timedelta('3D'))
est utilisée pour appliquer une fenêtre glissante de 3 jours sur la colonneventes
. La fonctionpd.Timedelta('3D')
permet de spécifier une fenêtre glissante de 3 jours. Ensuite,mean()
calcule la moyenne des ventes dans cette fenêtre glissante.La moyenne mobile est calculée pour chaque jour, mais pour les 2 premiers jours, la moyenne mobile sera
NaN
, car il n'y a pas assez de données (moins de 3 jours précédents) pour effectuer le calcul.Affichage du DataFrame après application de la moyenne mobile
La ligne
print(df)
affiche le DataFrame après l'ajout de la colonnemoyenne_rolling
, qui contient la moyenne mobile des ventes sur une fenêtre glissante de 3 jours.