Als Einstieg in die Arbeit mit der Zeitreihenbibliothek importieren Sie die Bibliothek in Ihr Python-Notizbuch oder Ihre Anwendung.
Verwenden Sie diesen Befehl, um die Zeitreihenbibliothek zu importieren:
# Import the package
import tspy
Zeitreihe erstellen
Für die Erstellung einer Zeitreihe und die Verwendung der Bibliotheksfunktionen müssen Sie die Datenquellen festlegen. Die unterstützten Datenquellen umfassen unter anderem die folgenden:
- Speicherinterne Listen
- Pandas-Datenrahmen
- Speicherinterne Erfassung von Beobachtungen (mit dem Konstrukt
ObservationCollection
) - Benutzerdefinierte Leser (mit dem Konstrukt
TimeSeriesReader
)
Das folgende Beispiel zeigt die Aufnahme von Daten aus einer speicherinternen Liste:
ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0])
ts
Die Ausgabe sieht wie folgt aus:
TimeStamp: 0 Value: 5.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 4.0
TimeStamp: 3 Value: 6.0
TimeStamp: 4 Value: 6.0
TimeStamp: 5 Value: 7.0
Sie können mit dem Konstrukt MultiTimeSeries
auch mehrere Zeitreihen gleichzeitig bearbeiten. Ein MultiTimeSeries
ist im Wesentlichen ein Wörterverzeichnis von Zeitreihen, in denen jede Zeitreihe einen eigenen eindeutigen Schlüssel hat. Die Zeitreihen sind nicht nach Zeit ausgerichtet.
Das Konstrukt MultiTimeSeries
stellt ähnliche Methoden für die Transformation und Aufnahme bereit wie das Einzelzeitreihenkonstrukt:
mts = tspy.multi_time_series({
"ts1": tspy.time_series([1.0, 2.0, 3.0]),
"ts2": tspy.time_series([5.0, 2.0, 4.0, 5.0])
})
Die folgende Ausgabe wird angezeigt:
ts2 time series
------------------------------
TimeStamp: 0 Value: 5.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 4.0
TimeStamp: 3 Value: 5.0
ts1 time series
------------------------------
TimeStamp: 0 Value: 1.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 3.0
Zeit interpretieren
Eine Zeitreihe verwendet standardmäßig den Datentyp long
, um anzugeben, wann eine bestimmte Beobachtung erstellt wurde, die als Zeitschritt bezeichnet wird. Ein Zeitreferenzsystem wird für Zeitreihen mit Zeitmarken verwendet, die vom Menschen interpretierbar sind. Siehe Zeitreferenzsystem verwenden.
Das folgende Beispiel zeigt, wie eine einfache Zeitreihe erstellt wird, wobei jeder Index einen Tag nach der Startzeit von 1990-01-01
angibt:
import datetime
granularity = datetime.timedelta(days=1)
start_time = datetime.datetime(1990, 1, 1, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)
ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0], granularity=granularity, start_time=start_time)
ts
Die Ausgabe sieht wie folgt aus:
TimeStamp: 1990-01-01T00:00Z Value: 5.0
TimeStamp: 1990-01-02T00:00Z Value: 2.0
TimeStamp: 1990-01-03T00:00Z Value: 4.0
TimeStamp: 1990-01-04T00:00Z Value: 6.0
TimeStamp: 1990-01-05T00:00Z Value: 6.0
TimeStamp: 1990-01-06T00:00Z Value: 7.0
Einfache Transformationen durchführen
Transformationen sind Funktionen, die, wenn mindestens eine Zeitreihe angegeben ist, eine neue Zeitreihe zurückgeben.
Verwenden Sie beispielsweise die folgende Methode, um eine Zeitreihe in Fenster zu segmentieren, in denen jedes Fenster size=3
und um 2 Datensätze gleitend ist:
window_ts = ts.segment(3, 2)
window_ts
Die Ausgabe sieht wie folgt aus:
TimeStamp: 0 Value: original bounds: (0,2) actual bounds: (0,2) observations: [(0,5.0),(1,2.0),(2,4.0)]
TimeStamp: 2 Value: original bounds: (2,4) actual bounds: (2,4) observations: [(2,4.0),(3,6.0),(4,6.0)]
In dem folgenden Beispiel wird gezeigt, wie jedem Wert in einer Zeitreihe 1 hinzugefügt wird:
add_one_ts = ts.map(lambda x: x + 1)
add_one_ts
Die Ausgabe sieht wie folgt aus:
TimeStamp: 0 Value: 6.0
TimeStamp: 1 Value: 3.0
TimeStamp: 2 Value: 5.0
TimeStamp: 3 Value: 7.0
TimeStamp: 4 Value: 7.0
TimeStamp: 5 Value: 8.0
Sie können eine Zeitreihe auch zeitlich "links herum" verknüpfen, beispielsweise ts
mit einer weiteren Zeitreihe.ts2
:
ts2 = tspy.time_series([1.0, 2.0, 3.0])
joined_ts = ts.left_join(ts2)
joined_ts
Die Ausgabe sieht wie folgt aus:
TimeStamp: 0 Value: [5.0, 1.0]
TimeStamp: 1 Value: [2.0, 2.0]
TimeStamp: 2 Value: [4.0, 3.0]
TimeStamp: 3 Value: [6.0, null]
TimeStamp: 4 Value: [6.0, null]
TimeStamp: 5 Value: [7.0, null]
Transformer verwenden
Im Transformerpaket wird eine umfangreiche Suite von integrierten Transformern bereitgestellt. Importieren Sie das Paket, um die bereitgestellten Transformerfunktionen zu verwenden:
from tspy.builders.functions import transformers
Nachdem Sie das Paket hinzugefügt haben, können Sie Daten in einer Zeitreihe mit der Methode transform
transformieren.
Beispielsweise zur Ermittlung einer Zeitreihendifferenz:
ts_diff = ts.transform(transformers.difference())
Die Ausgabe sieht hier wie folgt aus:
TimeStamp: 1 Value: -3.0
TimeStamp: 2 Value: 2.0
TimeStamp: 3 Value: 2.0
TimeStamp: 4 Value: 0.0
TimeStamp: 5 Value: 1.0
Reducer verwenden
Ähnlich wie beim Transformerpaket können Sie eine Zeitreihe reduzieren, indem Sie die vom Reducerpaket bereitgestellten Methoden verwenden. Sie können das Reducerpaket folgendermaßen importieren:
from tspy.builders.functions import reducers
Verwenden Sie nach dem Import des Pakets die Methode reduce
, um den Durchschnitt über eine Zeitreihe zu ermitteln. Beispiel:
avg = ts.reduce(reducers.average())
avg
Die Ausgabe:
5.0
Reducer verfügen über eine besondere Eigenschaft, sodass sie neben Segmentierungstransformationen verwendet werden können (stündliche Summe, Durchschnitt in dem Fenster vor dem Auftreten eines Fehlers usw.). Da die Ausgabe einer segmentation + reducer
eine Zeitreihe ist, wird die Methode transform
verwendet.
Verwenden Sie beispielsweise für die Segmentierung in Fenster der Größe 3 und zur Berechnung des Durchschnitts der einzelnen Fenster Folgendes:
avg_windows_ts = ts.segment(3).transform(reducers.average())
Ergebnis:
imeStamp: 0 Value: 3.6666666666666665
TimeStamp: 1 Value: 4.0
TimeStamp: 2 Value: 5.333333333333333
TimeStamp: 3 Value: 6.333333333333333
Zeitreihe grafisch darstellen
Bei der grafischen Darstellung einer Zeitreihe wird die verzögerte Auswertung verwendet. Wenn Sie eine Zeitreihe grafisch darstellen, können Sie einen der folgenden Schritte ausführen:
- Erfassen Sie die Beobachtungen der Zeitreihe, die eine
BoundTimeSeries
zurückgibt - Die Zeitreihe zu einem Wert oder zu einer Wertesammlung reduzieren
- Speicher- und Druckoperationen durchführen
Beispielsweise zur Erfassung und Rückgabe aller Werte einer Zeitreihe:
observations = ts.materialize()
observations
Ergebnis:
[(0,5.0),(1,2.0),(2,4.0),(3,6.0),(4,6.0),(5,7.0)]
Zur Erfassung eines Bereichs einer Zeitreihe verwenden Sie Folgendes:
observations = ts[1:3] # same as ts.materialize(1, 3)
observations
Die Ausgabe sieht hier wie folgt aus:
[(1,2.0),(2,4.0),(3,6.0)]
Beachten Sie, dass eine Zeitreihe für Bereichsabfragen optimiert wird, wenn die Zeitreihe periodisch ist.
Wenn Sie describe
für eine aktuelle Zeitreihe verwenden, wird auch die Zeitreihe grafisch dargestellt:
describe_obj = ts.describe()
describe_obj
Die Ausgabe sieht wie folgt aus:
min inter-arrival-time: 1
max inter-arrival-time: 1
mean inter-arrival-time: 1.0
top: 6.0
unique: 5
frequency: 2
first: TimeStamp: 0 Value: 5.0
last: TimeStamp: 5 Value: 7.0
count: 6
mean:5.0
std:1.632993161855452
min:2.0
max:7.0
25%:3.5
50%:5.5
75%:6.25
Weitere Informationen
- Wichtige Zeitreihenfunktionalität
- Zeitreihenfunktionen
- Verzögerte Zeitreihenauswertung
- Zeitreferenzsystem verwenden
tspy
Python SDK-Dokumentation
Übergeordnetes Thema: Zeitreihenanalyse