Les données de séries temporelles (Time Series) consistent en des points de données collectés ou enregistrés à des intervalles de temps spécifiques.
Travailler avec des données de type DateTime #
Les données DateTime sont essentielles pour l’analyse des séries temporelles. Avec pandas, nous n’avons plus à nous préoccuper de cette analyse car il fournit un support robuste pour travailler avec les dates et les heures.
pd.to_datetime
: Cette méthode te permet de convertir ta série avec datetime en une série pandas datetime grâce à laquelle tu peux faire beaucoup plus d’analyses de manière transparente. Tu peux obtenir l’année, le mois, le jour et les heures.
import pandas as pd # Exemple de DataFrame avec une colonne DateTime data = {'DateTime': ['2023-01-01 08:30:00', '2023-02-01 14:45:00', '2023-03-01 20:15:00']} df = pd.DataFrame(data) # Convertir la colonne 'DateTime' en DateTime df['DateTime'] = pd.to_datetime(df['DateTime']) # Extraire l'année, le mois, le jour et l'heure df['Year'] = df['DateTime'].dt.year df['Month'] = df['DateTime'].dt.month df['Day'] = df['DateTime'].dt.day df['Hour'] = df['DateTime'].dt.hour print(df)
Ré-échantillonnage et décalage #
Le ré-échantillonnage (resampling) est le processus de modification de la fréquence de tes données de séries temporelles. Il permet d’agréger ou de transformer les données d’une fréquence temporelle à une autre. Les raisons courantes du ré-échantillonnage sont les suivantes :
- Agrégation : Tu peux disposer de données à haute fréquence (quotidienne, par exemple) et vouloir les agréger à une fréquence inférieure (mensuelle, par exemple) afin d’obtenir une vue d’ensemble plus large des données.
- Interpolation : Tu peux disposer de données à intervalles irréguliers et vouloir les ré-échantillonner à une fréquence régulière à des fins d’analyse ou de visualisation.
Dans cet exemple, nous ré-échantillonnons les données de ventes quotidiennes à une fréquence mensuelle, en les agrégeant par la somme des ventes pour chaque mois.
import pandas as pd # Exemple de DataFrame avec des données de ventes quotidiennes data = {'Date': pd.date_range(start='2023-01-01', periods=40, freq='D'), 'Sales': [i for i in range(40)]} df = pd.DataFrame(data) # Rééchantillonner les données à une fréquence mensuelle, en calculant la somme des ventes. monthly_sales = df.resample('M', on='Date').sum() print(monthly_sales)
- Décalage (shifting) : Également connu sous le nom de décalage temporel ou de déplacement temporel, il s’agit de déplacer des points de données vers l’avant ou vers l’arrière dans le temps. Il est souvent utilisé pour calculer des différences ou des caractéristiques temporelles dans les données de séries temporelles. Les cas d’utilisation courants du décalage sont les suivants :
- Calcul des différences : Tu peux calculer la différence entre le point de données actuel et un point de données antérieur ou futur. C’est utile pour comprendre les tendances ou les changements dans les données.
- Décalages temporels (Time lag) : Tu peux créer des décalages temporels d’une variable afin d’analyser comment les valeurs passées de cette variable affectent les résultats futurs.
Dans cet exemple, nous calculons les variations de prix sur un jour en soustrayant le prix de la veille du prix du jour.
import pandas as pd # Exemple de DataFrame avec les cours quotidiens des actions data = {'Date': pd.date_range(start='2023-01-01', periods=5, freq='D'), 'Price': [100, 105, 110, 108, 112]} df = pd.DataFrame(data) # Calculer les variations de prix sur un jour (décalage d'un jour) df['Price_Change'] = df['Price'] - df['Price'].shift(1) df ------------------------------------------------------------------- output: Date Price Price_Change 0 2023-01-01 100 NaN 1 2023-01-02 105 5.0 2 2023-01-03 110 5.0 3 2023-01-04 108 -2.0 4 2023-01-05 112 4.0
Statistiques de roulement #
Les statistiques de roulement (ou glissantes), également connues sous le nom de calculs roulants (ou glissants), sont une technique courante dans l’analyse des séries temporelles. Elles impliquent l’application d’une fonction statistique à une fenêtre de taille fixe de points de données qui se déplace dans l’ensemble de données un pas à la fois.
Les statistiques de roulement peuvent atténuer le bruit dans les données de séries temporelles, ce qui rend les modèles sous-jacents plus visibles. Elles aident à détecter les tendances ou les modèles dans le temps, comme les moyennes mobiles.
- Taille de la fenêtre : La fenêtre roulante a une taille fixe que tu spécifies. Cette taille détermine le nombre de points de données pris en compte dans chaque calcul. Par exemple, une taille de fenêtre de 3 signifie que tu prends en compte le point de données actuel et les deux points de données précédents dans chaque calcul.
- Fonction de roulement : Tu appliques une fonction spécifique aux données uniquement à l’intérieur de la fenêtre de roulement. Les fonctions courantes sont la moyenne, la somme, l’écart type, etc.
Dans cet exemple, la moyenne est calculée pour une fenêtre de 3, ce qui signifie que pour chaque cellule, la moyenne du point de données actuel et des deux points de données précédents est calculée.
import pandas as pd # Exemple de DataFrame avec les cours quotidiens des actions data = {'Date': pd.date_range(start='2023-01-01', periods=10, freq='D'), 'Price': [100, 105, 110, 108, 112, 115, 118, 120, 122, 125]} df = pd.DataFrame(data) # Calculer la moyenne mobile des prix sur 3 jours df['Rolling_Mean'] = df['Price'].rolling(window=3).mean() df --------------------------------------------------------------- output: Date Price Rolling_Mean 0 2023-01-01 100 NaN 1 2023-01-02 105 NaN 2 2023-01-03 110 105.000000 3 2023-01-04 108 107.666667 4 2023-01-05 112 110.000000 5 2023-01-06 115 111.666667 6 2023-01-07 118 115.000000 7 2023-01-08 120 117.666667 8 2023-01-09 122 120.000000 9 2023-01-10 125 122.333333