Jak obliczyć wykładniczą średnią ruchomą w pandach


W analizie szeregów czasowych średnia ruchoma jest po prostu średnią wartością kilku poprzednich okresów.

Wykładnicza średnia krocząca to rodzaj średniej kroczącej, która przywiązuje większą wagę do ostatnich obserwacji, co oznacza, że jest w stanie szybciej uchwycić najnowsze trendy.

W tym samouczku wyjaśniono, jak obliczyć wykładniczą średnią ruchomą dla kolumny wartości w ramce DataFrame pandy.

Przykład: wykładnicza średnia krocząca u pand

Załóżmy, że mamy następującą ramkę DataFrame pand:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'period': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
                   'sales': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19]})

#view DataFrame 
df

        period sales
0 1 25
1 2 20
2 3 14
3 4 16
4 5 27
5 6 20
6 7 12
7 8 15
8 9 14
9 10 19

Możemy użyć funkcji pandas.DataFrame.ewm() do obliczenia wykładniczej średniej kroczącej dla pewnej liczby poprzednich okresów.

Na przykład, oto jak obliczyć wykładniczą ważoną średnią ruchomą na podstawie poprzednich czterech okresów:

 #create new column to hold 4-day exponentially weighted moving average
df['4dayEWM'] = df['sales']. ewm (span= 4 , adjust= False ). mean ()

#view DataFrame 
df

        period sales 4dayEWM
0 1 25 25.000000
1 2 20 23.000000
2 3 14 19.400000
3 4 16 18.040000
4 5 27 21.624000
5 6 20 20.974400
6 7 12 17.384640
7 8 15 16.430784
8 9 14 15.458470
9 10 19 16.875082

Możemy również użyć biblioteki matplotlib do wizualizacji sprzedaży w odniesieniu do 4-dniowej wykładniczej średniej kroczącej:

 import matplotlib.pyplot as plt

#plot sales and 4-day exponentially weighted moving average
plt. plot (df['sales'], label='Sales')
plt. plot (df['4dayEWM'], label='4-day EWM')

#add legend to plot
plt. legend (loc=2)

Wykładniczo ważona średnia ruchoma u pand

Dodatkowe zasoby

Jak obliczyć średnie kroczące w Pythonie
Jak obliczyć średnią kolumn w Pandach
Jak obliczyć autokorelację w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *