# Einführung
Die Arbeit mit Zeitreihendaten erfordert eine Reihe konsistenter Aufgaben. Rohdaten kommen in unregelmäßigen Abständen an und müssen erneut abgetastet werden. Anomale Spitzen müssen identifiziert werden, bevor sie eine nachgelagerte Analyse verzerren. Traits und saisonale Muster müssen vom Rauschen getrennt werden. Und wenn Sie über mehrere Serien verfügen, ist mehr als ein kurzer visueller Scan erforderlich, um zu verstehen, wie sie zueinander in Beziehung stehen.
Diese fünf Python-Skripte erledigen diese häufigen Zeitreihenaufgaben. Sie sind so konzipiert, dass sie mit Commonplace-CSV- oder Excel-Eingaben arbeiten, saubere Ausgaben erzeugen und sich einfach für verschiedene Datensätze konfigurieren lassen.
Sie können alle Skripte auf GitHub herunterladen.
# 1. Resampling und Aggregation unregelmäßiger Zeitreihen
// Der Schmerzpunkt
Zeitreihendaten aus der realen Welt liegen selten in gleichmäßigen Abständen vor. Sensormesswerte, Transaktionsprotokolle und Ereignisströme weisen Lücken, Duplikate und inkonsistente Zeitstempel auf. Vor einer sinnvollen Analyse müssen die Daten auf eine konsistente Häufigkeit abgeglichen werden.
// Was das Skript macht
Nimmt eine CSV- oder Excel-Datei mit einer Datums-/Uhrzeitspalte und einer oder mehreren Wertspalten, führt ein Resampling mit einer von Ihnen angegebenen Häufigkeit durch und wendet Aggregationsfunktionen professional Spalte an. Füllt oder markiert Lücken und schreibt eine saubere Ausgabedatei mit einer Zusammenfassung der Änderungen.
// Wie es funktioniert
Das Skript analysiert die Datetime-Spalte mit Pandaslegt es als Index fest und verwendet resample() mit konfigurierbaren Frequenzsträngen. In einer Konfiguration werden spaltenweise Aggregationsmethoden definiert, sodass eine Temperaturspalte den Mittelwert verwenden kann, während eine Verkaufsspalte die Summe verwendet. Fehlende Intervalle nach dem Resampling werden je nach Einstellung mit Vorwärtsfüllung, Interpolation oder expliziter NaN-Kennzeichnung behandelt. Ein Lückenbericht listet jedes Intervall auf, in dem im Unique keine Daten vorhanden waren.
⏩ Holen Sie sich das Zeitreihen-Resampler-Skript
# 2. Erkennen von Anomalien in Zeitreihendaten
// Der Schmerzpunkt
Ein einzelner anomaler Anstieg oder Abfall in einer Zeitreihe kann Durchschnittswerte verzerren, nachgelagerte Modelle zerstören und echte Traits verschleiern. Die manuelle Identifizierung dieser Punkte durch Scannen von Diagrammen oder Rohwerten ist bei jedem aussagekräftigen Datenvolumen unpraktisch.
// Was das Skript macht
Durchsucht eine oder mehrere numerische Spalten in einer Zeitreihendatei und markiert Datenpunkte, die außerhalb der erwarteten Grenzen liegen, mithilfe einer Auswahl von drei Erkennungsmethoden: Z-Rating, Interquartilbereich (IQR) oder rollierende Statistik. Gibt eine kommentierte Datei mit Anomalie-Flags und einem separaten zusammenfassenden Bericht aus.
// Wie es funktioniert
Die Z-Rating-Methode markiert Punkte, an denen der standardisierte Wert einen konfigurierbaren Schwellenwert überschreitet (Commonplace ±3). Die Interquartilbereichsmethode (IQR) markiert Punkte außerhalb des 1,5-fachen Interquartilbereichs. Die rollierende Methode berechnet einen gleitenden Mittelwert und eine Standardabweichung über ein konfigurierbares Fenster und markiert Punkte, die erheblich vom lokalen Kontext abweichen. Dies ist nützlich für Serien mit starken Traits oder Saisonalität. Alle drei können zusammen ausgeführt werden; In der Ausgabespalte wird aufgezeichnet, welche Methode jeden Punkt markiert hat. Eine optionale --plot Flag speichert ein Diagramm für jede Spalte mit hervorgehobenen Anomalien.
⏩ Holen Sie sich das Skript zur Anomalieerkennung
# 3. Zerlegen einer Reihe in Development, Saisonalität und Residuen
// Der Schmerzpunkt
Eine Zeitreihe ist normalerweise eine Kombination aus mehreren Komponenten: einem langfristigen Development, einem sich wiederholenden saisonalen Muster und unregelmäßigem Restrauschen. Die Analyse der Serie als Ganzes macht es schwierig, eine einzelne Komponente klar zu verstehen.
// Was das Skript macht
Wendet die klassische Zeitreihenzerlegung auf eine numerische Spalte an und unterteilt die beobachtete Reihe in Development-, Saison- und Restkomponenten. Unterstützt sowohl additive als auch multiplikative Zerlegungsmodelle. Exportiert jede Komponente als Spalte in die Ausgabedatei und speichert ein Diagramm mit mehreren Panels.
// Wie es funktioniert
Das Skript verwendet statsmodels.tsa.seasonal.seasonal_decompose() auf der Zielspalte nach dem Resampling auf eine konsistente Frequenz, falls erforderlich. Die Zerlegungsdauer ist konfigurierbar. Die additive Zerlegung eignet sich für Reihen, in denen die jahreszeitlichen Schwankungen in ihrer Größe annähernd konstant sind. multiplikative Anzugsserie, bei der es mit dem Trendniveau skaliert. Die ausgegebene Excel-Datei enthält die Originalreihe neben den drei extrahierten Komponenten. Das gespeicherte Diagramm zeigt alle vier Panels gestapelt.
⏩ Holen Sie sich das Zeitreihenzerlegungsskript
# 4. Prognose mit saisonalem, autoregressivem, integriertem gleitendem Durchschnitt
// Der Schmerzpunkt
Die Erstellung einer Prognose aus einer Zeitreihe umfasst in der Regel Modellauswahl, Parameterabstimmung und Validierungsschritte, für deren Richtigkeit statistische Kenntnisse erforderlich sind. Dies jedes Mal von Grund auf neu einzurichten, ist zeitaufwändig und führt zu Prognosen, denen man nur schwer vertrauen oder die man reproduzieren kann.
// Was das Skript macht
Passt zu einem saisonaler autoregressiver integrierter gleitender Durchschnitt (SARIMA) Modell in eine Zeitreihenspalte, generiert eine Prognose für eine konfigurierbare Anzahl von Zeiträumen und schreibt Ergebnisse in eine Ausgabedatei, einschließlich der Prognosewerte, Konfidenzintervalle und grundlegenden Genauigkeitsmetriken für einen zurückgehaltenen Validierungszeitraum. Wählt elective Modellparameter automatisch aus Akaike-Informationskriterium (AIC) Minimierung.
// Wie es funktioniert
Das Skript verwendet statsmodels.tsa.statespace.sarimax.SARIMAX zur Modellmontage. Wann --auto-order festgelegt ist, führt es eine einfache Rastersuche über einen konfigurierbaren Bereich von ARIMA- und Saisonparametern durch und wählt die Kombination mit dem niedrigsten AIC aus. Die Serie ist in einen Trainingssatz und einen durchgehaltenen Testsatz unterteilt, der in mehrere Perioden konfigurierbar ist. Die Genauigkeit wird für den Testsatz anhand des mittleren absoluten Fehlers (MAE) und des quadratischen Mittelwerts (Root Imply Sq. Error, RMSE) angegeben, bevor das endgültige Modell erneut an die gesamte Serie angepasst wird, um die Vorwärtsprognose zu erstellen. Die Ergebnisse umfassen die Punktprognose und 95 %-Konfidenzintervalle. Es wird ein Prognosediagramm gespeichert, das die historischen Reihen, die tatsächlichen Werte des Testzeitraums im Vergleich zu den Prognosen und die Zukunftsprognose mit Konfidenzbändern zeigt.
⏩ Holen Sie sich das SARIMA-Prognoseskript
# 5. Vergleich mehrerer Zeitreihen
// Der Schmerzpunkt
Wenn Sie mit mehreren verwandten Zeitreihen arbeiten – verschiedenen Produkten, Regionen, Sensoren oder Metriken –, ist mehr erforderlich, um zu verstehen, wie sie sich zusammen bewegen, als sie nur im selben Diagramm anzuzeigen. Korrelationsanalysen, Verzögerungsbeziehungen und abgestimmte zusammenfassende Statistiken müssen alle berechnet werden, und dies über viele Reihenpaare hinweg durchzuführen, wird schnell unhandlich.
// Was das Skript macht
Nimmt eine Datei mit mehreren Zeitreihenspalten, richtet sie auf eine gemeinsame Häufigkeit aus und erstellt einen Vergleichsbericht mit mehreren Registerkarten, der paarweise Korrelationen, Verzögerungsanalyse (Kreuzkorrelation bis zu einer konfigurierbaren Verzögerung) und eine nebeneinander liegende zusammenfassende Statistiktabelle abdeckt. Für die am höchsten korrelierten Paare werden Diagramme erstellt.
// Wie es funktioniert
Das Skript verwendet Pandas, um alle Spalten nach dem Resampling an einem gemeinsamen Datum/Uhrzeit-Index auszurichten. Paarweise Pearson- und Spearman-Korrelationen werden berechnet und in eine Korrelationsmatrix-Registerkarte geschrieben. Die Kreuzkorrelation wird für jedes Paar bis zu einer konfigurierbaren maximalen Verzögerung berechnet und identifiziert die Verzögerung, bei der jedes Paar seinen Höhepunkt erreicht. Dies ist nützlich, um Vorlauf-/Nachlaufbeziehungen zu finden. Eine Zusammenfassungsregisterkarte enthält Mittelwert, Standardabweichung, Minimal, Most und Trendrichtung (constructive/unfavourable Steigung aus einer linearen Anpassung) für jede Serie. Die fünf am stärksten korrelierten Paare erhalten jeweils ein zweiachsiges Liniendiagramm in einer eigenen Diagrammregisterkarte.
⏩ Holen Sie sich das Vergleichsskript für mehrere Serien
# Zusammenfassung
Diese fünf Skripte decken die Kernaufgaben bei der Arbeit mit Zeitreihendaten ab. Sie sind so konzipiert, dass sie unabhängig oder nacheinander verwendet werden können: Zuerst erneut abtasten, Anomalien erkennen, zerlegen, prognostizieren und dann serienübergreifend vergleichen.
Laden Sie zunächst das Skript herunter, das Sie verwenden möchten, und installieren Sie alle in der README-Datei aufgeführten Abhängigkeiten. Aktualisieren Sie als Nächstes den Konfigurationsabschnitt oben im Skript, sodass er mit Ihren spezifischen Daten und Spaltennamen übereinstimmt. Bevor Sie es für Ihren gesamten Datensatz ausführen, testen Sie das Skript anhand einer kleinen Stichprobe, um sicherzustellen, dass die Ausgabe korrekt ist. Sobald Sie mit den Ergebnissen zufrieden sind, können Sie es planen oder in Ihre bestehende Datenpipeline integrieren.
Viel Spaß beim Analysieren!
Bala Priya C ist ein Entwickler und technischer Redakteur aus Indien. Sie arbeitet gerne an der Schnittstelle von Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Zu ihren Interessen- und Fachgebieten gehören DevOps, Datenwissenschaft und Verarbeitung natürlicher Sprache. Sie liebt es zu lesen, zu schreiben, zu programmieren und Kaffee zu trinken! Derzeit arbeitet sie daran, zu lernen und ihr Wissen mit der Entwickler-Group zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt außerdem ansprechende Ressourcenübersichten und Programmier-Tutorials.
