Расчеты экспоненциальной скользящей средней (EMA) в кадре данных Polars ⇐ Python
Расчеты экспоненциальной скользящей средней (EMA) в кадре данных Polars
У меня есть следующий список из 20 значений:
значения = [143.15,143.1,143.06,143.01,143.03,143.09,143.14,143.18,143.2,143.2,143.2,143.31,143.38,143.35,143.34,143.25,143.3 3143,3143,33143,36] Чтобы найти экспоненциальное скользящее среднее по диапазону из 9 значений, я могу сделать на Python следующее:
def Calculate_ema(значения, периоды, сглаживание=2): ema = [сумма(значения[:периоды]) / периоды] по цене в значениях[периоды:]: ema.append((цена * (сглаживание / (1 + периоды))) + ema[-1] * (1 - (сглаживание / (1 + периоды)))) вернуть эму ema_9 = вычислить_ema(значения, периоды=9) [143.10666666666668, 143.12533333333334, 143.14026666666666, 143.17421333333334, 143.21537066666667, 143.24229653333333, 143.26183722666667, 143.25946978133334, 143.27357582506667, 143.27886066005334, 143.28908852804267, 143.30327082243414] Результирующий список значений EMA состоит из 12 элементов, первое значение [0] соответствует девятому значению [8] из значений.
Используя Pandas и TA-Lib, я могу выполнить следующее:
импортировать панд как pd импортировать талибов как та df_pan = pd.DataFrame( { 'ценность': ценности } ) df_pan['ema_9'] = ta.EMA(df_pan['value'], time period=9) df_pan Значение ema_9 0 143,15 НЭН 1 143,10 НЭН 2 143,06 НЭН 3 143,01 НаН 4 143,03 НЭН 5 143,09 НЭН 6 143,14 НаН 7 143,18 НаН 8 143,20 143,106667 9 143,20 143,125333 10 143,20 143,140267 11 143,31 143,174213 12 143,38 143,215371 13 143,35 143,242297 14 143,34 143,261837 15 143,25 143,259470 16 143,33 143,273576 17 143,30 143,278861 18 143,33 143,289089 19 143,36 143,303271 Выходные данные Pandas/TA-Lib соответствуют выводам моей функции Python.
Однако, когда я пытаюсь воспроизвести это, используя функциональность исключительно Polars:
импортировать поляры как pl df = ( pl.DataFrame( { 'ценность': ценности } ) .with_columns( pl.col('value').ewm_mean(span=9, min_ periods=9,).alias('ema_9') ) ) дф Я получаю разные значения:
значение ema_9 ф64 ф64 143,15 ноль 143,1 ноль 143,06 ноль 143,01 ноль 143,03 ноль 143,09 ноль 143,14 ноль 143,18 ноль 143,2 143,128695 143,2 143,144672 143,2 143,156777 143,31 143,189683 143,38 143,229961 143,35 143,255073 143,34 143,272678 143,25 143,268011 143,33 143,280694 143,3 143,284626 143,33 143,293834 143,36 143,307221 Кто-нибудь может объяснить, какие изменения мне нужно внести в код Polars, чтобы получить ожидаемые результаты?
У меня есть следующий список из 20 значений:
значения = [143.15,143.1,143.06,143.01,143.03,143.09,143.14,143.18,143.2,143.2,143.2,143.31,143.38,143.35,143.34,143.25,143.3 3143,3143,33143,36] Чтобы найти экспоненциальное скользящее среднее по диапазону из 9 значений, я могу сделать на Python следующее:
def Calculate_ema(значения, периоды, сглаживание=2): ema = [сумма(значения[:периоды]) / периоды] по цене в значениях[периоды:]: ema.append((цена * (сглаживание / (1 + периоды))) + ema[-1] * (1 - (сглаживание / (1 + периоды)))) вернуть эму ema_9 = вычислить_ema(значения, периоды=9) [143.10666666666668, 143.12533333333334, 143.14026666666666, 143.17421333333334, 143.21537066666667, 143.24229653333333, 143.26183722666667, 143.25946978133334, 143.27357582506667, 143.27886066005334, 143.28908852804267, 143.30327082243414] Результирующий список значений EMA состоит из 12 элементов, первое значение [0] соответствует девятому значению [8] из значений.
Используя Pandas и TA-Lib, я могу выполнить следующее:
импортировать панд как pd импортировать талибов как та df_pan = pd.DataFrame( { 'ценность': ценности } ) df_pan['ema_9'] = ta.EMA(df_pan['value'], time period=9) df_pan Значение ema_9 0 143,15 НЭН 1 143,10 НЭН 2 143,06 НЭН 3 143,01 НаН 4 143,03 НЭН 5 143,09 НЭН 6 143,14 НаН 7 143,18 НаН 8 143,20 143,106667 9 143,20 143,125333 10 143,20 143,140267 11 143,31 143,174213 12 143,38 143,215371 13 143,35 143,242297 14 143,34 143,261837 15 143,25 143,259470 16 143,33 143,273576 17 143,30 143,278861 18 143,33 143,289089 19 143,36 143,303271 Выходные данные Pandas/TA-Lib соответствуют выводам моей функции Python.
Однако, когда я пытаюсь воспроизвести это, используя функциональность исключительно Polars:
импортировать поляры как pl df = ( pl.DataFrame( { 'ценность': ценности } ) .with_columns( pl.col('value').ewm_mean(span=9, min_ periods=9,).alias('ema_9') ) ) дф Я получаю разные значения:
значение ema_9 ф64 ф64 143,15 ноль 143,1 ноль 143,06 ноль 143,01 ноль 143,03 ноль 143,09 ноль 143,14 ноль 143,18 ноль 143,2 143,128695 143,2 143,144672 143,2 143,156777 143,31 143,189683 143,38 143,229961 143,35 143,255073 143,34 143,272678 143,25 143,268011 143,33 143,280694 143,3 143,284626 143,33 143,293834 143,36 143,307221 Кто-нибудь может объяснить, какие изменения мне нужно внести в код Polars, чтобы получить ожидаемые результаты?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Расчеты экспоненциальной скользящей средней (EMA) в кадре данных Polars
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как на графике выполняются расчеты в кадре данных для диаграммы солнечных лучей?
Anonymous » » в форуме Python - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-