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?

Foi útil?

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]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top