Heim > Backend-Entwicklung > Python-Tutorial > Beherrschung der Python-Zeitreihenanalyse: Tools und Techniken für Datenwissenschaftler

Beherrschung der Python-Zeitreihenanalyse: Tools und Techniken für Datenwissenschaftler

Patricia Arquette
Freigeben: 2025-01-18 22:17:09
Original
160 Leute haben es durchsucht

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

Als produktiver Autor lade ich Sie ein, meine Bücher auf Amazon zu erkunden. Denken Sie daran, meine Arbeit auf Medium zu verfolgen, um weitere Einblicke und Unterstützung zu erhalten. Ihr Engagement ist von unschätzbarem Wert!

Pythons Fähigkeiten in der Zeitreihenanalyse sind unbestreitbar und bieten ein reichhaltiges Ökosystem an Bibliotheken und Techniken für eine effiziente zeitliche Datenverarbeitung. Als Datenwissenschaftler habe ich aus erster Hand miterlebt, wie die Beherrschung dieser Tools unsere Fähigkeit erheblich verbessert, aus zeitbasierten Informationen aussagekräftige Erkenntnisse abzuleiten und genaue Vorhersagemodelle zu erstellen.

Pandas bildet die Grundlage für viele Python-basierte Zeitreihenanalysen. Seine DatetimeIndex und zugehörigen Funktionen vereinfachen die Manipulation von Datum und Uhrzeit. Ich nutze Pandas häufig für die vorläufige Datenbereinigung, das Resampling und grundlegende Visualisierungen. Umwandeln von Tagesdaten in Monatsdurchschnitte, zum Beispiel:

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

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist besonders hilfreich, wenn es um hochfrequente Daten geht, die eine Aggregation zur Analyse oder Berichterstellung erfordern.

Statsmodels bietet erweiterte statistische Modellierungstools für Zeitreihen. Es implementiert zahlreiche klassische Modelle, darunter ARIMA (Autoregressive Integrated Moving Average). Anpassen eines ARIMA-Modells:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

ARIMA-Modelle zeichnen sich durch kurzfristige Prognosen aus und erfassen effektiv Trends und Saisonalität.

Die Prophet-Bibliothek von Facebook ist für ihre benutzerfreundliche Oberfläche und den robusten Umgang mit Saisonalität bekannt. Es eignet sich besonders gut für Geschäftszeitreihen mit starken saisonalen Effekten und mehreren Staffeln historischer Daten. Ein einfaches Beispiel für einen Propheten:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Prophet erkennt automatisch jährliche, wöchentliche und tägliche Saisonalitäten, was in vielen Geschäftskontexten eine erhebliche Zeitersparnis darstellt.

Pyflux ist wertvoll für Bayes'sche Inferenz und probabilistische Zeitreihenmodellierung. Es ermöglicht komplexe Modellspezifikationen und bietet verschiedene Inferenzmethoden. Anpassen eines einfachen AR-Modells mit 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>
Nach dem Login kopieren
Nach dem Login kopieren

Die Stärke von Pyflux liegt in seiner Anpassungsfähigkeit und der Fähigkeit, Vorwissen in Modelle zu integrieren.

Tslearn, eine Bibliothek für maschinelles Lernen, die sich auf Zeitreihendaten konzentriert, ist besonders nützlich für Aufgaben wie dynamisches Time Warping und Zeitreihen-Clustering. Durchführen von K-Means-Clustering:

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

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist äußerst nützlich, um Muster zu identifizieren oder ähnliche Zeitreihen zu gruppieren.

Darts, eine neuere Bibliothek, wird schnell zu einem Favoriten. Es bietet eine einheitliche Schnittstelle für viele Zeitreihenmodelle und vereinfacht so den Vergleich verschiedener Prognosemethoden. Vergleich von Modellen mit 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>
Nach dem Login kopieren
Nach dem Login kopieren

Dies erleichtert das schnelle Experimentieren mit verschiedenen Modellen, was entscheidend ist, um die optimale Passform für Ihre Daten zu finden.

Ein effektiver Umgang mit fehlenden Werten ist unerlässlich. Zu den Strategien gehört das Vorwärts-/Rückwärtsfüllen:

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

# Assuming 'df' is your DataFrame with a DatetimeIndex
monthly_avg = df.resample('M').mean()</code>
Nach dem Login kopieren
Nach dem Login kopieren

Eine anspruchsvollere Imputation verwendet 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>
Nach dem Login kopieren
Nach dem Login kopieren

Saisonalitätsmanagement ist ein weiterer wichtiger Aspekt. Während Prophet dies automatisch erledigt, erfordern andere Modelle eine explizite Modellierung. Die saisonale Zerlegung ist ein Ansatz:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Diese Zerlegung deckt zugrunde liegende Muster auf und informiert über Modellierungsentscheidungen.

Eine genaue Prognoseauswertung ist entscheidend, wobei Metriken wie MAE, MSE und MAPE verwendet werden:

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

model = pf.ARIMA(data=df, ar=1, ma=0, integ=0)
results = model.fit('MLE')</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich kombiniere diese Kennzahlen oft für eine umfassende Leistungsbewertung.

Die Zeitreihenanalyse hat vielfältige Anwendungsmöglichkeiten. Im Finanzwesen wird es zur Aktienkursvorhersage und Risikobewertung verwendet. Berechnen rollierender Statistiken zu Bestandsdaten:

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

kmeans = TimeSeriesKMeans(n_clusters=3, metric="dtw")
clusters = kmeans.fit_predict(time_series_data)</code>
Nach dem Login kopieren
Nach dem Login kopieren

Im IoT werden Anomalien erkannt und Geräteausfälle vorhergesagt. Eine einfache schwellenwertbasierte Anomalieerkennung:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

Bedarfsprognosen nutzen Techniken wie die exponentielle Glättung:

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

# Backward fill
df_bfill = df.fillna(method='bfill')</code>
Nach dem Login kopieren

Dies prognostiziert die zukünftige Nachfrage basierend auf historischen Verkaufsdaten.

Instationarität, bei der sich statistische Eigenschaften im Laufe der Zeit ändern, ist eine häufige Gefahr. Der Augmented Dickey-Fuller-Test prüft die Stationarität:

<code class="language-python">df_interp = df.interpolate(method='time')</code>
Nach dem Login kopieren

Instationäre Reihen erfordern möglicherweise Differenzierungen oder Transformationen vor der Modellierung.

Ausreißer können die Ergebnisse verfälschen. Die Interquartile Range (IQR)-Methode identifiziert potenzielle Ausreißer:

<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>
Nach dem Login kopieren

Der Umgang mit Ausreißern hängt vom Domänenwissen und den Analyseanforderungen ab.

Pandas ermöglicht das Resampling von Daten auf verschiedene Frequenzen:

<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>
Nach dem Login kopieren

Dies ist nützlich, wenn Sie Daten aus verschiedenen Quellen kombinieren oder Daten für die Analyse ausrichten.

Feature Engineering erstellt Features, die wichtige Merkmale erfassen. Wochentag, Monat oder Quartal extrahieren:

<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>
Nach dem Login kopieren

Diese Funktionen verbessern häufig die Modellleistung, indem sie zyklische Muster erfassen.

Vector Autoregression (VAR) verarbeitet mehrere verwandte Zeitreihen:

<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>
Nach dem Login kopieren

Dadurch werden Wechselwirkungen zwischen Zeitreihen modelliert, wodurch möglicherweise Prognosen verbessert werden.

Python bietet ein robustes Ökosystem für die Zeitreihenanalyse. Von Pandas für die Datenbearbeitung bis hin zu Prophet und Darts für erweiterte Prognosen bieten diese Bibliotheken leistungsstarke Funktionen. Die Kombination dieser Tools mit Domänenexpertise und sorgfältiger Berücksichtigung von Dateneigenschaften liefert wertvolle Erkenntnisse und genaue Vorhersagen für verschiedene Anwendungen. Denken Sie daran, dass der Erfolg vom Verständnis der zugrunde liegenden Prinzipien und problemspezifischen Anforderungen abhängt. Kritische Bewertung, Annahmevalidierung und iterative Verfeinerung sind der Schlüssel zu einer effektiven Zeitreihenanalyse.


101 Bücher

101 Books ist ein KI-gestützter Verlag, der vom Autor Aarav Joshi mitbegründet wurde. Unsere fortschrittliche KI-Technologie hält die Veröffentlichungskosten bemerkenswert niedrig – einige Bücher kosten nur 4$ – und machen hochwertiges Wissen für alle zugänglich.

Entdecken Sie unser Buch Golang Clean Code auf Amazon.

Bleiben Sie über unsere neuesten Nachrichten auf dem Laufenden. Suchen Sie auf Amazon nach Aarav Joshi, um weitere Titel zu entdecken und auf Sonderrabatte zuzugreifen!

Unsere Veröffentlichungen

Entdecken Sie unsere anderen Publikationen:

Investor Central | Investor Central (Spanisch) | Investor Central (Deutsch) | Intelligentes Leben | Epochen & Echos | Rätselhafte Geheimnisse | Hindutva | Elite-Entwickler | JS-Schulen


Folgen Sie uns auf Medium

Tech Koala Insights | Epochs & Echoes World | Investor Central Medium | Puzzling Mysteries Medium | Wissenschaft & Epochen Medium | Modernes Hindutva

Das obige ist der detaillierte Inhalt vonBeherrschung der Python-Zeitreihenanalyse: Tools und Techniken für Datenwissenschaftler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage