Rolling mediana en python
-
14-11-2019 - |
Pregunta
Tengo algunos datos de stock basado en valores de cierre diario.Necesito ser capaz de insertar estos valores en una lista de python y obtener un promedio de los últimos 30 cierra.Hay una biblioteca de python que hace esto?
Solución
¿Ha considerado pandas ?Se basa en numpy
y puede asociar automáticamente las marcas de tiempo con sus datos, y descarta cualquier fechas desconocidas siempre que lo llene con numpy.nan
.También ofrece un gráfico bastante potente a través de MATPLOTLIB.
Básicamente, fue diseñado para el análisis financiero en Python.
Otros consejos
En python puro, teniendo sus datos en una lista de python a
, usted podría hacer
median = sum(sorted(a[-30:])[14:16]) / 2.0
(esto supone a
tiene al menos 30 artículos).
Usando el paquete adormecido, podría usar
median = numpy.median(a[-30:])
no es la mediana de sólo el valor medio de un criterio de rango?
así que, asumiendo su lista stock_data
:
last_thirty = stock_data[-30:]
median = sorted(last_thirty)[15]
Ahora usted sólo tiene que conseguir el off-by-one errores encontrados y reparados y también manejar el caso de stock_data
estar a menos de 30 elementos de la...
tratemos de que aquí un poco:
def rolling_median(data, window):
if len(data) < window:
subject = data[:]
else:
subject = data[-30:]
return sorted(subject)[len(subject)/2]