В анализе временных рядов скользящая средняя — это просто среднее значение определенного количества предыдущих периодов.
Экспоненциальное скользящее среднее — это тип скользящего среднего, который придает больший вес недавним наблюдениям, что означает, что он может быстрее фиксировать последние тенденции.
В этом руководстве объясняется, как рассчитать экспоненциальное скользящее среднее для столбца значений в кадре данных pandas.
Пример: экспоненциальная скользящая средняя в Pandas
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
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
Мы можем использовать функцию pandas.DataFrame.ewm() для вычисления экспоненциально взвешенной скользящей средней за определенное количество предыдущих периодов.
Например, вот как рассчитать экспоненциально взвешенную скользящую среднюю, используя четыре предыдущих периода:
#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
Мы также можем использовать библиотеку matplotlib для визуализации продаж по сравнению с 4-дневной экспоненциально взвешенной скользящей средней:
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)

Дополнительные ресурсы
Как рассчитать скользящие средние в Python
Как рассчитать среднее значение столбцов в Pandas
Как рассчитать автокорреляцию в Python