Rolando mediana em python
-
14-11-2019 - |
Pergunta
Eu tenho alguns dados de estoque com base em valores de fechamento diário.Eu preciso ser capaz de inserir estes valores em uma lista python e obter uma média dos últimos 30 fecha.Existe uma biblioteca em python que faz isso?
Solução
Você já considerou pandas ?Ele é baseado no numpy
e pode associar automaticamente os timestamps com seus dados e descartar quaisquer datas desconhecidas, desde que você o preencha com o numpy.nan
.Também oferece algum grafitário bastante poderoso via Matplotlib.
Basicamente foi projetado para análise financeira em Python.
Outras dicas
Em puro Python, ter os dados em uma lista Python a
, você poderia fazer
median = sum(sorted(a[-30:])[14:16]) / 2.0
(Isso pressupõe a
tem pelo menos 30 itens.)
Usando o pacote NumPy, você pode usar
median = numpy.median(a[-30:])
não é a mediana apenas o valor médio em um intervalo ordenado?
assim, supondo que a sua lista é stock_data
:
last_thirty = stock_data[-30:]
median = sorted(last_thirty)[15]
Agora você só precisa ficar off por um os erros encontrados e corrigidos e também lidar com o caso de stock_data
estar a menos de 30 elementos...
vamos tentar isso aqui um pouco:
def rolling_median(data, window):
if len(data) < window:
subject = data[:]
else:
subject = data[-30:]
return sorted(subject)[len(subject)/2]