Fenêtre glissante avec des fonctions d’agrégation (moyenne, somme, etc.)

L’utilisation d’une fenêtre glissante avec des fonctions d’agrégation comme la moyenne, la somme, ou d’autres opérations statistiques permet d’analyser des séries temporelles ou des séquences de données en appliquant une fonction sur un sous-ensemble des données qui « glisse » à travers l’ensemble. Par exemple, une moyenne mobile calcule la moyenne des valeurs dans une fenêtre fixe qui se déplace le long des données, ce qui permet de lisser les fluctuations et de mieux visualiser les tendances à court terme.

Fonctions :

  • rolling().sum()

    La fonction rolling() en combinaison avec des fonctions d'agrégation telles que sum(), mean(), ou std() permet de calculer des statistiques mobiles sur une fenêtre glissante. Elle calcule ces statistiques sur un sous-ensemble de données successives définies par la taille de la fenêtre. Cela est très utile pour analyser des séries temporelles ou pour lissage des données, en particulier lorsqu'on veut observer la tendance ou la variation d'une donnée sur une période donnée.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    window Le nombre d'observations à inclure dans chaque fenêtre. Par exemple, window=3 signifie que les calculs seront effectués sur une fenêtre de 3 valeurs successives.
    aggfunc La fonction d'agrégation à appliquer. Par exemple, sum() pour la somme, mean() pour la moyenne, ou std() pour l'écart-type.
    min_periods Le nombre minimum d'observations non-nulles dans la fenêtre nécessaire pour effectuer le calcul. Par défaut, il est égal à la taille de la fenêtre.
    axis L'axe sur lequel effectuer l'opération. Par défaut, c'est 0 pour les lignes.
    closed Définit si la fenêtre est fermée à gauche, à droite, ou les deux. Par défaut, la fenêtre est ouverte à droite ('right').

    Exemple de code :

    import pandas as pd
    
    # Création d'un DataFrame exemple
    data = {
        'date': ['2025-01-01', '2025-01-02', '2025-01-03', '2025-01-04', '2025-01-05'],
        'ventes': [100, 150, 200, 250, 300]
    }
    
    df = pd.DataFrame(data)
    
    # Application de la somme mobile sur une fenêtre glissante de 3 jours
    df['somme_rolling'] = df['ventes'].rolling(window=3).sum()
    
    # Affichage du DataFrame après application de la somme mobile
    print(df)

    Explication du code :

    1. Fenêtre glissante avec rolling(window=3) :
      La méthode rolling() est utilisée pour créer une fenêtre glissante. Ici, la taille de la fenêtre est de 3 (window=3), ce qui signifie que l'opération sera effectuée sur un sous-ensemble de 3 valeurs successives à chaque étape.

    2. Agrégation avec sum() :
      La fonction sum() calcule la somme des valeurs dans chaque fenêtre. Cela signifie qu'à chaque étape, la somme des 3 dernières valeurs de la colonne 'colonne' sera calculée et assignée à la nouvelle colonne 'somme_rolling'.

    3. Valeurs manquantes au début :
      Les premières lignes de la colonne 'somme_rolling' seront NaN car il n'y a pas assez de valeurs pour remplir la fenêtre (par exemple, pour une fenêtre de 3, les deux premières lignes n'auront pas de somme calculée).

     

    🔹 Remarques pratiques

    • Utilisation pour l'analyse de tendances :
      La fonction de somme mobile est souvent utilisée pour lisser des séries temporelles et comprendre la tendance sous-jacente des données. Par exemple, dans les séries financières, cela permet d’observer la somme des transactions ou des ventes sur une période donnée.

    • Application d'autres fonctions d'agrégation :
      En plus de sum(), vous pouvez appliquer d'autres fonctions d'agrégation comme mean() pour une moyenne mobile, std() pour l'écart-type mobile, ou même des fonctions personnalisées pour des calculs plus spécifiques.

    • Fenêtre dynamique :
      Vous pouvez ajuster la taille de la fenêtre (window) pour ajuster la sensibilité des statistiques mobiles. Par exemple, une fenêtre de taille 7 pour une analyse hebdomadaire ou de taille 30 pour une analyse mensuelle.