Zeitreihen liegen häufig in unterschiedlichen Abtastraten vor oder müssen auf eine andere Zeitskala transformiert werden.
Typische Gründe:
Vergleich zweier Zeitreihen
Reduktion von Rauschen durch Aggregation
Anpassung an Reporting-Intervalle
Vorbereitung für Modellierung
Merke
Resampling bedeutet: Änderung der Zeitskala. Dabei muss entschieden werden zwischen Aggregation und Interpolation.
4.1 3.1 Ausgangszeitreihe (stündlich)
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltrng = np.random.default_rng(2)t = pd.date_range("2025-01-01", periods=24*5, freq="H")y = pd.Series(10+ rng.normal(size=len(t)), index=t, name="signal")y.plot(title="Stündliche Zeitreihe")plt.show()
/var/folders/p_/ks3trxjx0jd839_g4g0vm4nc0000gn/T/ipykernel_19306/2493709333.py:7: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
t = pd.date_range("2025-01-01", periods=24*5, freq="H")
Summe → sinnvoll bei Mengen (z. B. Energieverbrauch)
4.3 3.3 Upsampling (Interpolation)
Wir erhöhen die zeitliche Auflösung.
y_2h = y.resample("2H").mean()y_up = y_2h.resample("H").interpolate("time")ax = y_2h.plot(marker="o", label="2H (aggregiert)")y_up.plot(ax=ax, alpha=0.7, label="Interpoliert auf 1H")plt.legend()plt.title("Upsampling mit Interpolation")plt.show()
/var/folders/p_/ks3trxjx0jd839_g4g0vm4nc0000gn/T/ipykernel_19306/2179676712.py:1: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
y_2h = y.resample("2H").mean()
/var/folders/p_/ks3trxjx0jd839_g4g0vm4nc0000gn/T/ipykernel_19306/2179676712.py:2: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
y_up = y_2h.resample("H").interpolate("time")
Achtung
Interpolation erzeugt keine neuen Messinformationen, sondern modelliert einen plausiblen Verlauf.
/var/folders/p_/ks3trxjx0jd839_g4g0vm4nc0000gn/T/ipykernel_19306/3177252539.py:1: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
t2 = pd.date_range("2025-01-01", periods=24*5, freq="2H")
Zur gemeinsamen Analyse müssen beide Reihen dieselbe Frequenz haben.
y2_aligned = y2.resample("H").interpolate("time")df = pd.concat([y, y2_aligned], axis=1)df.plot(title="Aligned Time Series")plt.show()
/var/folders/p_/ks3trxjx0jd839_g4g0vm4nc0000gn/T/ipykernel_19306/1233815767.py:1: FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
y2_aligned = y2.resample("H").interpolate("time")