Pandas Zeitreihen-DataFrame-Beispieldatensatz erstellen

English Deutsch

TL;DR: Verwende unseren vorgefertigten Beispieldatensatz wie folgt:

load_timeseries_example.py
# 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:

generate_timeseries.py
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

Danach definieren wir den Zeitstempel, an dem der Datensatz beginnt:

start_timestamp.py
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:

create_timestamps.py
# 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:

build_dataframe.py
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:

plot_timeseries.py
# 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)

Pandas Zeitreihen-Plot von Sinus- und Kosinuswellen

Zusätzlich können wir den Datensatz als CSV exportieren mit

export_timeseries.py
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:

timeseries_full_example.py
#!/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")

Check out similar posts by category: Pandas, Python