Вычислить ежедневные доходы с помощью Pandas DataFrame

Вот мой кадр данных Pandas:

prices = pandas.DataFrame([1035.23, 1032.47, 1011.78, 1010.59, 1016.03, 1007.95, 1022.75, 1021.52, 1026.11, 1027.04, 1030.58, 1030.42, 1036.24, 1015.00, 1015.20]) 

Вот моя функция daily_return :

 def daily_return(prices): return prices[:-1] / prices[1:] - 1 

Вот вывод, который исходит из этой функции:

 0 NaN 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 NaN 

Почему у меня такой вывод?

2 Solutions collect form web for “Вычислить ежедневные доходы с помощью Pandas DataFrame”

Поскольку операции будут выполнять выравнивание по индексу, вы можете преобразовать один из DataFrames в массив:

 prices[:-1].values / prices[1:] - 1 

или

 prices[:-1] / prices[1:].values - 1 

зависит от того, какой индекс результата вы хотите.

или используйте метод shift() :

 prices.shift(1) / prices - 1 

а также:

 prices / prices.shift(1) - 1 

Почему бы не использовать очень удобный метод pct_change предоставляемый pandas по умолчанию:

 import pandas as pd prices = pandas.DataFrame([1035.23, 1032.47, 1011.78, 1010.59, 1016.03, 1007.95, 1022.75, 1021.52, 1026.11, 1027.04, 1030.58, 1030.42, 1036.24, 1015.00, 1015.20]) daily_return = prices.pct_change(1) # 1 for ONE DAY lookback monthly_return = prices.pct_change(21) # 21 for ONE MONTH lookback annual_return = prices.pct_change(252) # 252 for ONE YEAR lookback 

Первоначальные prices :

 print(prices) 0 0 1035.23 1 1032.47 2 1011.78 3 1010.59 4 1016.03 5 1007.95 6 1022.75 7 1021.52 8 1026.11 9 1027.04 10 1030.58 11 1030.42 12 1036.24 13 1015.00 14 1015.20 

Daily Return as prices.pct_change(1) :

 print(prices.pct_change(1)) 0 0 NaN 1 -0.002666 2 -0.020039 3 -0.001176 4 0.005383 5 -0.007953 6 0.014683 7 -0.001203 8 0.004493 9 0.000906 10 0.003447 11 -0.000155 12 0.005648 13 -0.020497 14 0.000197 
  • csv.writerows () помещает новую строку после каждой строки
  • Использование функции C в Python
  • ошибка синтаксиса печати с помощью python 3
  • Значения списка, возвращающие значения плюс , почему?
  • Терминал Pycharm не изменяет версию Python, соответствующую версии Python, в Project Interpreter
  • Интерфейсы веб-шлюза в Python 3
  • Разбор синтаксиса в python 3
  • Сортировка кортежей кортежей в алфавитном порядке
  • Python - лучший язык программирования в мире.