Die Zeitreihenbibliothek stellt verschiedene Funktionen für univariate, multivariate und mehrfach geschlüsselte Zeitreihen sowie numerische und kategorische Typen bereit.
Die von der Bibliothek bereitgestellte Funktionalität kann weitgehend folgendermaßen kategorisiert werden:
- Zeitreihen-E/A, zum Erstellen und Speichern von Zeitreihendaten
- Zeitreihenfunktionen, Transformationen, Fenstertechnik oder Segmentierung und Reducer
- Zeitreihen-SQL und SQL-Erweiterungen für Spark, um skalierbare Zeitreihenfunktionen ausführen zu können
Ein Teil der wichtigen Funktionalität wird in den folgenden Abschnitten anhand von Beispielen veranschaulicht.
Zeitreihen-E/A
Die primäre Eingabe- und Ausgabefunktionalität (E/A-Funktionalität) für eine Zeitreihe erfolgt über einen Pandas-Datenrahmen oder eine Python-Liste. Das folgende Codebeispiel zeigt die Erstellung einer Zeitreihe aus einem Datenrahmen:
>>> import numpy as np
>>> import pandas as pd
>>> data = np.array([['', 'key', 'timestamp', "value"],['', "a", 1, 27], ['', "b", 3, 4], ['', "a", 5, 17], ['', "a", 3, 7], ['', "b", 2, 45]])
>>> df = pd.DataFrame(data=data[1:, 1:], index=data[1:, 0], columns=data[0, 1:]).astype(dtype={'key': 'object', 'timestamp': 'int64', 'value': 'float64'})
>>> df
key timestamp value
a 1 27.0
b 3 4.0
a 5 17.0
a 3 7.0
b 2 45.0
#Create a timeseries from a dataframe, providing a timestamp and a value column
>>> ts = tspy.time_series(df, ts_column="timestamp", value_column="value")
>>> ts
TimeStamp: 1 Value: 27.0
TimeStamp: 2 Value: 45.0
TimeStamp: 3 Value: 4.0
TimeStamp: 3 Value: 7.0
TimeStamp: 5 Value: 17.0
Verwenden Sie die Funktion to_df
, um eine Zeitreihe auf einen Pandas-DataFrame zurückzusetzen:
>>> import tspy
>>> ts_orig = tspy.time_series([1.0, 2.0, 3.0])
>>> ts_orig
TimeStamp: 0 Value: 1
TimeStamp: 1 Value: 2
TimeStamp: 2 Value: 3
>>> df = ts_orig.to_df()
>>> df
timestamp value
0 0 1
1 1 2
2 2 3
Datenmodell
Im Unterschied zu einigen Datentypen wie geografische Datentypen, die von einem Standard wie Open Geospatial Consortium (OGC) geregelt werden, gibt es für Zeitreihendaten keine Standards für die Modell- und Datentypen. Die Herausforderung bei Zeitreihendaten besteht in der breiten Vielfalt von Funktionen, die unterstützt werden müssen, ähnlich wie bei Spark Resilient Distributed Datasets (RDD).
Das Datenmodell ermöglicht eine breite Vielfalt von Operationen in einem Bereich von verschiedenen Formen der Segmentierung oder Fenstertechnik bei Zeitreihen, Transformationen oder Konvertierungen von einer Zeitreihe zu einer anderen, Reducern, die einen statischen Wert aus einer Zeitreihe berechnen, Joins, die mehrere Zeitreihen verknüpfen, und Kollektoren von Zeitreihen aus verschiedenen Zeitzonen. Die Zeitreihenbibliothek ermöglicht das Plug-and-play neuer Funktionen, während die zentrale Datenstruktur unveränderbar bleibt. Die Bibliothek unterstützt darüber hinaus Zeitreihen des numerischen und des kategorischen Typs.
Bei Zeitzonen und verschiedenen lesbaren Zeitformaten ist ein wichtiger Aspekt des Datenmodells die Unterstützung für das Zeitreferenzsystem (TRS - Time Reference System). Jede Zeitreihe ist einem TRS zugeordnet (Systemstandardwert), das jederzeit einer bestimmten Auswahl des Benutzers neu zugeordnet werden kann, sodass eine einfache Transformation einer bestimmten Zeitreihe oder eines Segments einer Zeitreihe möglich ist. Siehe Zeitreferenzsystem verwenden.
Darüber hinaus bietet die Bibliothek aufgrund der Notwendigkeit, große Zeitreihen zu verarbeiten, eine Anweisung zur verzögerten Auswertung, indem ein Mechanismus zur Erkennung der maximalen engen temporalen Abhängigkeit bereitgestellt wird. Diese Anweisung ähnelt sehr der eines Spark-Berechnungsdiagramms, bei dem ebenfalls Daten nur bei Bedarf in den Speicher geladen werden und die Berechnungen nur bei Bedarf realisiert werden.
Datentypen von Zeitreihen
Sie können mehrere Datentypen als ein Element einer Zeitreihe verwenden, die numerische und kategorische Datenstrukturen, Array-Datenstrukturen und Wörterverzeichnisdatenstrukturen umfassen.
Die folgenden Datentypen werden in einer Zeitreihe unterstützt:
Datumstyp | Beschreibung |
---|---|
numerisch | Zeitreihe mit univariaten Beobachtungen des numerischen Typs, einschließlich Doppelzeichen und Ganzzahlen. Beispiel: [(1, 7.2), (3, 4.5), (5, 4.5), (5, 4.6), (5, 7.1), (7, 3.9), (9, 1.1)] |
numerisches Array | Zeitreihe mit multivariaten Beobachtungen des numerischen Typs, einschließlich Doppelarray und Ganzzahlarray. Beispiel: [(1, [7.2, 8.74]), (3, [4.5, 9.44]), (5, [4.5, 10.12]), (5, [4.6, 12.91]), (5, [7.1, 9.90]), (7, [3.9, 3.76])] |
Zeichenfolge | Zeitreihe mit univariaten Beobachtungswerten des Typs 'Zeichenfolge', z. B.:[(1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")] |
Zeichenfolgenarray | Zeitreihe mit multivariaten Beobachtungswerten des Typs 'Zeichenfolgenarray', z. B.:[(1, ["a", "xq"]), (3, ["b", "zr"]), (5, ["c", "ms"]), (5, ["d", "rt"]), (5, ["e", "wu"]), (7, ["f", "vv"]), (9, ["g", "zw"])] |
Segment | Zeitreihe von Segmenten. Die Ausgabe der Funktion segmentBy kann einen beliebigen Typ haben, einschließlich numerisch, Zeichenfolge, numerisches Array und Zeichenfolgenarray. Beispiel:[(1,[(1, 7.2), (3, 4.5)]), (5,[(5, 4.5), (5, 4.6), (5, 7.1)]), (7,[(7, 3.9), (9, 1.1)])] |
Wörterbuch | Zeitreihe von Wörterverzeichnissen. Ein Wörterverzeichnis kann beliebige Typen beinhalten. |
Zeitreihenfunktionen
Sie können verschiedene Funktionen in den bereitgestellten Zeitreihenpaketen verwenden, um Zeitreihendaten zu analysieren, um aussagefähige Informationen zu extrahieren, mit denen Modelle erstellt werden, die zur Vorhersage neuer Werte auf der Basis von zuvor beobachteten Werten verwendet werden können. Siehe Zeitreihenfunktionen.
Weitere Informationen
Informationen zur Verwendung von tspy
Python SDK finden Sie in der tspy
Python SDK-Dokumentation.
Übergeordnetes Thema: Zeitreihenanalyse