Вычислить ежедневные доходы с помощью 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 
  • Получение уникальных комбинаций из уникального списка элементов, FASTER?
  • Базовый язык python
  • Добавить значения ключей и отсортировать их по вступлению ключей в список словарей в Python
  • Tkinter tkFileDialog не существует
  • Python3: поиск альтернатив gevent и pylibmc / python-memcached
  • Несколько строк меток x tick в matplotlib
  • Python: В чем разница между __builtin__ и __builtins__?
  • Экспорт результатов ClearSoup в CSV; scrape + включить значения изображения в столбце
  • Является ли итератор также итерируемым?
  • Распаковка, расширенная распаковка и вложенная расширенная распаковка
  • не setup.py разработать использовать колесо для install_requires?
  • Python - лучший язык программирования в мире.