#python #pandas
#python #панды
Вопрос:
Я пытаюсь немного изучить python и в настоящее время делаю несколько примеров на фондовом рынке. Однако я наткнулся на нечто, называемое накопленной линией распределения (технический индикатор), и попытался следовать математическому выражению для этого, пока не дошел до следующей строки:
ADL [i] = ADL [i-1] объем денежного потока [i]
Теперь. У меня есть объем денежных потоков с индексом 8 и пустая таблица для ADL с индексом 9 (индекс для строк в файле csv). Как бы мне на самом деле вычислить математическое выражение, приведенное выше, в python? (В настоящее время используется Python с Pandas)
В настоящее время пытался использовать функцию диапазона, такую как:
for i in range(1,stock["Money flow volume"])):
stock.iloc[0,9] = stock.iloc[(i-1),9] stock.iloc[i,8]
Но я думаю, что я делаю что-то не так.
Ответ №1:
это просто выглядит как совокупная сумма с неопределенным базовым вариантом, поэтому я бы просто использовал встроенную cumsum
функциональность.
import pandas as pd
df = pd.DataFrame(dict(mfv=range(10)))
df['adl'] = df['mfv'].cumsum()
должен делать то, что вы хотите, относительно эффективно
Комментарии:
1. На случай, если вы не знали, почти все технические индикаторы встроены в модули, которые вы можете импортировать. github.com/twopirllc/pandas-ta Но если вы пытаетесь выучить python на практике, то саморазвитие — достойное дело.
2. он автоматически выполняется по всей серии, поэтому нет необходимости помещать его в
for
цикл. попробуйте распечататьdf
в моем коде до и послеcumsum
. запуск кода в IPython или записной книжке Jupyter может помочь понять, что происходит