Maison > développement back-end > Tutoriel Python > Maîtriser l'analyse des séries chronologiques Python : outils et techniques pour les data scientists

Maîtriser l'analyse des séries chronologiques Python : outils et techniques pour les data scientists

Patricia Arquette
Libérer: 2025-01-18 22:17:09
original
195 Les gens l'ont consulté

Mastering Python Time Series Analysis: Tools and Techniques for Data Scientists

En tant qu'auteur prolifique, je vous invite à explorer mes livres sur Amazon. N'oubliez pas de suivre mon travail sur Medium pour obtenir des informations et un soutien continus. Votre engagement est inestimable !

Les capacités de Python en matière d'analyse de séries chronologiques sont indéniables, offrant un riche écosystème de bibliothèques et de techniques pour une gestion efficace des données temporelles. En tant que data scientist, j'ai pu constater par moi-même à quel point la maîtrise de ces outils améliore considérablement notre capacité à obtenir des informations significatives et à créer des modèles prédictifs précis à partir d'informations temporelles.

Pandas constitue la base de nombreuses analyses de séries chronologiques basées sur Python. Son DatetimeIndex et ses fonctions associées simplifient la manipulation de la date et de l'heure. J'utilise fréquemment Pandas pour le nettoyage préliminaire des données, le rééchantillonnage et les visualisations de base. Rééchantillonnage des données quotidiennes en moyennes mensuelles, par exemple :

<code class="language-python">import pandas as pd

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Copier après la connexion
Copier après la connexion

Ceci est particulièrement utile lorsqu'il s'agit de données à haute fréquence nécessitant une agrégation à des fins d'analyse ou de reporting.

Statsmodels fournit des outils avancés de modélisation statistique pour les séries chronologiques. Il implémente de nombreux modèles classiques, dont ARIMA (Autoregressive Integrated Moving Average). Montage d'un modèle ARIMA :

<code class="language-python">from statsmodels.tsa.arima.model import ARIMA

# Fit the model
model = ARIMA(df['value'], order=(1,1,1))
results = model.fit()

# Make predictions
forecast = results.forecast(steps=30)</code>
Copier après la connexion
Copier après la connexion

Les modèles ARIMA excellent dans les prévisions à court terme, capturant efficacement les tendances et la saisonnalité.

La bibliothèque Prophet de Facebook est connue pour son interface conviviale et sa gestion robuste de la saisonnalité. Il est particulièrement adapté aux séries chronologiques commerciales présentant de forts effets saisonniers et plusieurs saisons de données historiques. Un exemple de base de Prophet :

<code class="language-python">from prophet import Prophet

# Prepare the data
df = df.rename(columns={'date': 'ds', 'value': 'y'})

# Create and fit the model
model = Prophet()
model.fit(df)

# Make future predictions
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)</code>
Copier après la connexion
Copier après la connexion

Prophet détecte automatiquement la saisonnalité annuelle, hebdomadaire et quotidienne, ce qui représente un gain de temps considérable dans de nombreux contextes commerciaux.

Pyflux est précieux pour l'inférence bayésienne et la modélisation probabiliste de séries chronologiques. Il permet des spécifications de modèles complexes et propose diverses méthodes d'inférence. Ajuster un modèle AR simple avec Pyflux :

<code class="language-python">import pyflux as pf

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
Copier après la connexion
Copier après la connexion

La force de Pyflux réside dans son adaptabilité et sa capacité à intégrer des connaissances préalables dans des modèles.

Tslearn, une bibliothèque d'apprentissage automatique axée sur les données de séries chronologiques, est particulièrement utile pour des tâches telles que la déformation temporelle dynamique et le clustering de séries chronologiques. Effectuer un clustering k-means :

<code class="language-python">from tslearn.clustering import TimeSeriesKMeans

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Copier après la connexion
Copier après la connexion

Ceci est extrêmement utile pour identifier des modèles ou regrouper des séries chronologiques similaires.

Darts, une bibliothèque plus récente, devient rapidement un favori. Il offre une interface unifiée pour de nombreux modèles de séries chronologiques, simplifiant ainsi la comparaison des différentes méthodes de prévision. Comparaison des modèles avec Darts :

<code class="language-python">from darts import TimeSeries
from darts.models import ExponentialSmoothing, ARIMA

series = TimeSeries.from_dataframe(df, 'date', 'value')

models = [ExponentialSmoothing(), ARIMA()]
for model in models:
    model.fit(series)
    forecast = model.predict(12)
    print(f"{type(model).__name__} MAPE: {model.mape(series, forecast)}")</code>
Copier après la connexion
Copier après la connexion

Cela facilite une expérimentation rapide avec divers modèles, cruciale pour trouver l'ajustement optimal pour vos données.

Une gestion efficace des valeurs manquantes est essentielle. Les stratégies incluent le remplissage avant/arrière :

<code class="language-python">import pandas as pd

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Copier après la connexion
Copier après la connexion

Une imputation plus sophistiquée utilise l'interpolation :

<code class="language-python">from statsmodels.tsa.arima.model import ARIMA

# Fit the model
model = ARIMA(df['value'], order=(1,1,1))
results = model.fit()

# Make predictions
forecast = results.forecast(steps=30)</code>
Copier après la connexion
Copier après la connexion

La gestion de la saisonnalité est un autre aspect clé. Alors que Prophet gère cela automatiquement, d'autres modèles nécessitent une modélisation explicite. La décomposition saisonnière est une approche :

<code class="language-python">from prophet import Prophet

# Prepare the data
df = df.rename(columns={'date': 'ds', 'value': 'y'})

# Create and fit the model
model = Prophet()
model.fit(df)

# Make future predictions
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)</code>
Copier après la connexion
Copier après la connexion

Cette décomposition révèle des modèles sous-jacents et éclaire les choix de modélisation.

Une évaluation précise des prévisions est cruciale, en utilisant des métriques telles que MAE, MSE et MAPE :

<code class="language-python">import pyflux as pf

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
Copier après la connexion
Copier après la connexion

Je combine souvent ces mesures pour une évaluation complète des performances.

L'analyse des séries chronologiques a de larges applications. En finance, il est utilisé pour la prévision du cours des actions et l’évaluation des risques. Calcul de statistiques glissantes sur les données boursières :

<code class="language-python">from tslearn.clustering import TimeSeriesKMeans

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Copier après la connexion
Copier après la connexion

Dans l'IoT, il détecte les anomalies et prédit les pannes d'équipements. Une simple détection d'anomalies basée sur un seuil :

<code class="language-python">from darts import TimeSeries
from darts.models import ExponentialSmoothing, ARIMA

series = TimeSeries.from_dataframe(df, 'date', 'value')

models = [ExponentialSmoothing(), ARIMA()]
for model in models:
    model.fit(series)
    forecast = model.predict(12)
    print(f"{type(model).__name__} MAPE: {model.mape(series, forecast)}")</code>
Copier après la connexion
Copier après la connexion

La prévision de la demande utilise des techniques telles que le lissage exponentiel :

<code class="language-python"># Forward fill
df_ffill = df.fillna(method='ffill')

# Backward fill
df_bfill = df.fillna(method='bfill')</code>
Copier après la connexion

Cela prédit la demande future sur la base des données de ventes historiques.

La non-stationnarité, où les propriétés statistiques changent au fil du temps, est un écueil courant. Le test Augmenté de Dickey-Fuller vérifie la stationnarité :

<code class="language-python">df_interp = df.interpolate(method='time')</code>
Copier après la connexion

Les séries non stationnaires peuvent nécessiter des différenciations ou des transformations avant la modélisation.

Les valeurs aberrantes peuvent fausser les résultats. La méthode Interquartile Range (IQR) identifie les valeurs aberrantes potentielles :

<code class="language-python">from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(df['value'], model='additive')
trend = result.trend
seasonal = result.seasonal
residual = result.resid</code>
Copier après la connexion

La gestion des valeurs aberrantes dépend de la connaissance du domaine et des exigences d'analyse.

Pandas facilite le rééchantillonnage des données à différentes fréquences :

<code class="language-python">from sklearn.metrics import mean_absolute_error, mean_squared_error
import numpy as np

mae = mean_absolute_error(actual, predicted)
mse = mean_squared_error(actual, predicted)
mape = np.mean(np.abs((actual - predicted) / actual)) * 100</code>
Copier après la connexion

Ceci est utile pour combiner des données provenant de diverses sources ou pour aligner des données pour l'analyse.

L'ingénierie des fonctionnalités crée des fonctionnalités capturant des caractéristiques importantes. Extraire le jour de la semaine, du mois ou du trimestre :

<code class="language-python">import yfinance as yf

# Download stock data
stock_data = yf.download('AAPL', start='2020-01-01', end='2021-12-31')

# Calculate 20-day rolling mean and standard deviation
stock_data['Rolling_Mean'] = stock_data['Close'].rolling(window=20).mean()
stock_data['Rolling_Std'] = stock_data['Close'].rolling(window=20).std()</code>
Copier après la connexion

Ces fonctionnalités améliorent souvent les performances du modèle en capturant des modèles cycliques.

L'autorégression vectorielle (VAR) gère plusieurs séries temporelles liées :

<code class="language-python">def detect_anomalies(series, window_size, num_std):
    rolling_mean = series.rolling(window=window_size).mean()
    rolling_std = series.rolling(window=window_size).std()
    anomalies = series[(series > rolling_mean + (num_std * rolling_std)) | (series < rolling_mean - (num_std * rolling_std))]</code>
Copier après la connexion

Cela modélise les interactions entre les séries chronologiques, améliorant potentiellement les prévisions.

Python offre un écosystème robuste pour l'analyse de séries chronologiques. De Pandas pour la manipulation des données à Prophet et Darts pour les prévisions avancées, ces bibliothèques offrent de puissantes fonctionnalités. La combinaison de ces outils avec une expertise du domaine et un examen attentif des caractéristiques des données produit des informations précieuses et des prédictions précises pour diverses applications. N'oubliez pas que le succès dépend de la compréhension des principes sous-jacents et des exigences spécifiques au problème. L'évaluation critique, la validation des hypothèses et l'affinement itératif sont essentiels à une analyse efficace des séries chronologiques.


101 livres

101 Books est une maison d'édition basée sur l'IA cofondée par l'auteur Aarav Joshi. Notre technologie avancée d'IA maintient les coûts de publication remarquablement bas (certains livres coûtent seulement 4 $), ce qui rend des connaissances de qualité accessibles à tous.

Explorez notre livre Golang Clean Code sur Amazon.

Restez informé de nos dernières nouvelles. Recherchez Aarav Joshi sur Amazon pour découvrir plus de titres et accéder à des réductions spéciales !

Nos publications

Découvrez nos autres publications :

Centre des investisseurs | Centre des investisseurs (espagnol) | Investor Central (allemand) | Vie intelligente | Époques & Échos | Mystères déroutants | Hindutva | Développeur Élite | Écoles JS


Suivez-nous sur Medium

Tech Koala Insights | Epoques & Echos Monde | Support Central des Investisseurs | Mystères déroutants Medium | Sciences & Epoques Medium | Hindutva moderne

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal