Mostra le medie mobili
È anche possibile visualizzare le medie mobili dei valori nella tua serie temporale. Questo equivale a “smussare” i dati e può essere particolarmente utile quando la tua serie temporale contiene molto rumore o outlier. Per un DataFrame df, puoi ottenere la media mobile della serie temporale usando il comando:
df_mean = df.rolling(window=12).mean()
Il parametro window va impostato in base alla granularità della tua serie temporale. Ad esempio, se la serie contiene dati giornalieri e cerchi valori mobili su un intero anno, dovresti specificare window=365. Inoltre, è facile ottenere valori mobili per altre metriche, come la deviazione standard (.std()) o la varianza (.var()).
Questo esercizio fa parte del corso
Visualizzare dati di serie temporali in Python
Istruzioni dell'esercizio
- Calcola la media mobile su 52 settimane di
co2_levelse assegnala ama. - Calcola la deviazione standard mobile su 52 settimane di
co2_levelse assegnala amstd. - Calcola il limite superiore della serie temporale, definito come media mobile + (2 * deviazione standard mobile), e assegnalo a
ma[upper]. Allo stesso modo, calcola il limite inferiore come media mobile - (2 * deviazione standard mobile) e assegnalo ama[lower]. - Traccia il grafico a linee di
ma.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()