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)
    Résultat du code

    Explication du code :

    La ligne import pandas as pd importe la bibliothèque pandas, renommée ici en pd pour simplifier son utilisation dans le code.

    Création d'un DataFrame exemple avec des dates

    Un DataFrame nommé df est créé avec les colonnes date et ventes. La colonne date contient des dates sous forme de chaînes, et la colonne ventes 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 colonne date 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 colonne date 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 colonne ventes. La fonction pd.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 colonne moyenne_rolling, qui contient la moyenne mobile des ventes sur une fenêtre glissante de 3 jours.