Pandas Zeitreihen-DataFrame-Beispieldatensatz erstellen
TL;DR: Verwende unseren vorgefertigten Beispieldatensatz wie folgt:
# Vorgefertigten Zeitreihen-Beispieldatensatz laden
df = pd.read_csv("https://datasets.techoverflow.net/timeseries-example.csv", parse_dates=["Timestamp"])
df.set_index("Timestamp", inplace=True)Einen eigenen Zeitreihen-Beispieldatensatz erstellen
In unserem vorherigen Beitrag Sinus/Kosinus-Wellendaten in Python mit UliEngineering einfach generieren haben wir gezeigt, wie man Sinus- und Kosinuswellen mit UliEngineering generiert.
In diesem Beitrag zeigen wir, wie man einen pandas-DataFrame mit Sinus- und Kosinusdaten erstellt, der als Beispiel-Zeitreihendatensatz verwendet werden kann.
Zuerst generieren wir die Sinus- und Kosinuswellendaten:
import pandas as pd
import numpy as np
from UliEngineering.SignalProcessing.Simulation import sine_wave, cosine_wave
# Eigenschaften der Sinusschwingung hier konfigurieren
frequency = 10.0 # 10 Hz Sinus- / Kosinuswelle
samplerate = 10000 # 10 kHz
nseconds = 1 # 1 Sekunde Daten generieren
sine = sine_wave(frequency=frequency, samplerate=samplerate, length=nseconds)
cosine = cosine_wave(frequency=frequency, samplerate=samplerate, length=nseconds)
nsamples = len(sine) # Wie viele Werte wir in den Daten-Arrays habenDanach definieren wir den Zeitstempel, an dem der Datensatz beginnt:
start_timestamp = pd.Timestamp('now')Nun können wir eine list von Timestamp-Objekten erstellen, die die Zeitpunkte darstellen, an denen das Signal abgetastet wurde:
# Zeitstempel durch Versatz erstellen
timedelta = pd.Timedelta(1/samplerate, 'seconds')
timestamps = [start_timestamp + i * timedelta for i in range(nsamples)]Nun sind wir bereit, das DataFrame-Objekt zu erstellen:
df = pd.DataFrame(index=timestamps, data={
"Sine": sine,
"Cosine": cosine
})
df.index.name = 'Timestamp'Nun können wir df.plot() verwenden, um den Datensatz zu plotten:
# Schönen Plot-Stil verwenden
from matplotlib import pyplot as plt
plt.style.use("ggplot")
# Datensatz plotten
df.plot()
# Abbildung vergrößern
plt.gcf().set_size_inches(10, 5)Zusätzlich können wir den Datensatz als CSV exportieren mit
df.to_csv("/ram/timeseries-example.csv")Diese Beispieldatei ist auch online verfügbar unter https://techoverflow.net/datasets/timeseries-example.csv
Vollständiges Beispiel:
#!/usr/bin/env python3
import pandas as pd
import numpy as np
from UliEngineering.SignalProcessing.Simulation import sine_wave, cosine_wave
# Eigenschaften der Sinusschwingung hier konfigurieren
frequency = 10.0 # 10 Hz Sinus- / Kosinuswelle
samplerate = 10000 # 10 kHz
nseconds = 1 # 1 Sekunde Daten generieren
sine = sine_wave(frequency=frequency, samplerate=samplerate, length=nseconds)
cosine = cosine_wave(frequency=frequency, samplerate=samplerate, length=nseconds)
nsamples = len(sine) # Wie viele Werte wir in den Daten-Arrays haben
start_timestamp = pd.Timestamp('now')
# Zeitstempel durch Versatz erstellen
timedelta = pd.Timedelta(1/samplerate, 'seconds')
timestamps = [start_timestamp + i * timedelta for i in range(nsamples)]
df = pd.DataFrame(index=timestamps, data={
"Sine": sine,
"Cosine": cosine
})
df.index.name = 'Timestamp'
df.to_csv("timeseries-example.csv")