как вычислить взвешенную скользящую среднюю, используя панд - PullRequest
8 голосов
/ 08 марта 2012

Используя панд, я могу вычислить

  • простую скользящую среднюю SMA, используя pandas.stats.moments.rolling_mean
  • экспоненциальную скользящую среднюю EMA, используя pandas.stats.moments.ewma

Но каквычислить взвешенное скользящее среднее (WMA), как описано в википедии http://en.wikipedia.org/wiki/Exponential_smoothing ... с использованием панд?

Существует ли функция панды для вычисления WMA?

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Нет, этого точного алгоритма нет. Создал GitHub вопрос об этом здесь:

https://github.com/pydata/pandas/issues/886

Я был бы рад получить запрос для этого - реализация должна быть простым кодированием Cython и может быть интегрирована в pandas.stats.moments

0 голосов
/ 18 декабря 2018

Используя панд, вы можете рассчитать взвешенное скользящее среднее, используя .rolling () в сочетании с .apply () .
Вот пример с 3 весами и окном = 3:

data = {'colA':random.randint(1, 6, 10)}
df = pd.DataFrame(data)

weights = np.array([0.5, 0.25, 0.25])
sum_weights = np.sum(weights)

df['weighted_ma'] = (df['colA']
    .rolling(window=3, center=True)
    .apply(lambda x: np.sum(weights*x) / sum_weights, raw=False)
)

Обратите внимание, что в .rolling () я использовал аргумент center = True.Вы должны проверить, относится ли это к вашему сценарию использования или нужно ли center = False.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...