Gleitende Durchschnitte anzeigen
Du kannst auch gleitende Durchschnitte der Werte deiner Zeitreihe visualisieren. Das entspricht einem „Glätten“ deiner Daten und ist besonders hilfreich, wenn deine Zeitreihe starkes Rauschen oder Ausreißer enthält. Für einen gegebenen DataFrame df erhältst du den gleitenden Durchschnitt der Zeitreihe mit dem Befehl:
df_mean = df.rolling(window=12).mean()
Der Parameter window sollte zur Granularität deiner Zeitreihe passen. Wenn deine Zeitreihe beispielsweise Tagesdaten enthält und du gleitende Werte über ein ganzes Jahr berechnen möchtest, gib window=365 an. Außerdem kannst du leicht gleitende Werte für andere Kennzahlen erhalten, etwa die Standardabweichung (.std()) oder die Varianz (.var()).
Diese Übung ist Teil des Kurses
Zeitreihendaten in Python visualisieren
Anleitung zur Übung
- Berechne den 52‑Wochen‑gleitenden Mittelwert von
co2_levelsund weise ihnmazu. - Berechne die 52‑Wochen‑gleitende Standardabweichung von
co2_levelsund weise siemstdzu. - Berechne die obere Grenze der Zeitreihe als gleitender Mittelwert + (2 × gleitende Standardabweichung) und weise sie
ma[upper]zu. Berechne analog die untere Grenze als gleitender Mittelwert − (2 × gleitende Standardabweichung) und weise siema[lower]zu. - Zeichne das Liniendiagramm von
ma.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Compute the 52 weeks rolling mean of the co2_levels DataFrame
ma = ____.rolling(window=____).____()
# Compute the 52 weeks rolling standard deviation of the co2_levels DataFrame
mstd = ____
# Add the upper bound column to the ma DataFrame
ma['upper'] = ma['co2'] + (____ * ____)
# Add the lower bound column to the ma DataFrame
ma['lower'] = ma['co2'] - (____ * ____)
# Plot the content of the ma DataFrame
ax = ____(linewidth=0.8, fontsize=6)
# Specify labels, legend, and show the plot
ax.set_xlabel('Date', fontsize=10)
ax.set_ylabel('CO2 levels in Mauai Hawaii', fontsize=10)
ax.set_title('Rolling mean and variance of CO2 levels\nin Mauai Hawaii from 1958 to 2001', fontsize=10)
plt.show()