Domanda

Ho alcuni dati di borsa in base ai valori chiusi giornalieri.Devo essere in grado di inserire questi valori in una lista di Python e ottenere una mediana per le ultime 30 chiuse.C'è una biblioteca Python che fa questo?

È stato utile?

Soluzione

Hai preso in considerazione pandas ?Si basa su numpy e può associare automaticamente i timestamp con i tuoi dati e scarta le date sconosciute finché lo riempiono con numpy.nan.Offre anche un grafico piuttosto potente tramite MATPLOTLIB.

Fondamentalmente è stato progettato per l'analisi finanziaria in Python.

Altri suggerimenti

In Pure Python, avendo i tuoi dati in un elenco di Python a, potresti fare

median = sum(sorted(a[-30:])[14:16]) / 2.0
.

(questo presuppone che a abbia almeno 30 articoli.)

Usando il pacchetto Numpy, è possibile utilizzare

median = numpy.median(a[-30:])
.

non è il mediano solo il valore medio in un intervallo ordinato?

Quindi, supponendo che la tua lista sia stock_data:

last_thirty = stock_data[-30:]
median = sorted(last_thirty)[15]
.

Ora hai solo bisogno di ottenere errori off-by-one trovati e fissi e gestire anche il caso di stock_data che è inferiore a 30 elementi ...

Proviamo qui un po ':

def rolling_median(data, window):
    if len(data) < window:
       subject = data[:]
    else:
       subject = data[-30:]
    return sorted(subject)[len(subject)/2]
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top