0 / 0
Zurück zur englischen Version der Dokumentation
Zeitreihenbibliothek verwenden
Letzte Aktualisierung: 04. Okt. 2024
Zeitreihenbibliothek verwenden

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 MultiTimeSeriesauch mehrere Zeitreihen gleichzeitig bearbeiten. Ein MultiTimeSeriesist 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 MultiTimeSeriesstellt ä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-01angibt:

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=3und 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 tsmit 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 transformtransformieren.

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 + reducereine Zeitreihe ist, wird die Methode transformverwendet.

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 BoundTimeSerieszurü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 describefü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

Übergeordnetes Thema: Zeitreihenanalyse

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen