Скользящая медиана в python
-
14-11-2019 - |
Вопрос
У меня есть некоторые данные по запасам, основанные на ежедневных значениях закрытия.Мне нужно иметь возможность вставить эти значения в список python и получить медиану за последние 30 закрытий.Есть ли библиотека python, которая делает это?
Решение
Рассматривали ли вы этот вопрос панды?Она основана на numpy
и может автоматически связывать временные метки с вашими данными и отбрасывать любые неизвестные даты до тех пор, пока вы заполняете их numpy.nan
.Он также предлагает довольно мощное построение графиков с помощью matplotlib.
В основном он был разработан для финансового анализа на python.
Другие советы
В чистом Python, имея ваши данные в списке Python a
, вы могли бы сделать
median = sum(sorted(a[-30:])[14:16]) / 2.0
(Это предполагает a
содержит не менее 30 наименований.)
Используя пакет NumPy, вы могли бы использовать
median = numpy.median(a[-30:])
Разве средняя только средняя стоимость в отсортированном диапазоне?
Итак, при условии, что ваш список генеракодичЕТCODE:
last_thirty = stock_data[-30:]
median = sorted(last_thirty)[15]
.
Теперь вам просто нужно получить ошибки, найденные и исправленные, а также обрабатываете случай stock_data
- менее 30 элементов ...
Давайте попробуем это здесь немного:
def rolling_median(data, window):
if len(data) < window:
subject = data[:]
else:
subject = data[-30:]
return sorted(subject)[len(subject)/2]
.