Per la mia tesi sto cercando di estrarre alcuni dati da Excel. Voglio creare un elenco con il nome come in excel e quindi aggiungere i valori a detto elenco in modo che possa lavorare con esso.
Modifica
Mi rendo conto che non sono chiaro nel mio ultimo post . Questo è semplicemente perché è stato difficile trovare materiale su openpyxl (non ho trovato la documentazione utile)
Dopo alcune ricerche ho realizzato alcune cose: Per prima cosa spiegherò il processo
In Excel ho molte colonne con un'intestazione = nome del titolo e sotto i valori per detto stock.
- Passaggio 1 dovrebbero leggere le colonne e differenziare tra i nomi
- passaggio 2 crea un dizionario da quelle colonne con la chiave come nome dello stock
-
passaggio 3 è calcolare una media con una funzione che esclude lo stock di input dalla media .so avg (dizionario, azione i) calcolerebbe la media dei valori del mio dizionario escludendo lo stock i
WB=load_workbook(filename=) ws = WB.active Stockslist={} i=0 for col in ws.columns: print("we are at column; "+str(i)) i+=1 for cell in col: if cell.value=="" or cell.value==None: print ("empty column") break if type(cell.value)==unicode: print (" we entered name") Stock=str(cell.value) else: Stockslist.setdefault(Stock,[]).append(cell.value)
Questo crea un dizionario con i valori, ora consente di calcolare la media escludendo un determinato stock
def CalcAverage(stockslist,stock):#stockslist is a dict, stock is a key in said dictionary
stocki=Stockslist.pop(stock)#remove stock we wanna exclude from dictionary
avgvalues=[]#create a list that will constitute average values
for k,v in Stockslist.iteritems():
print k
avgvalues.append(sum(v)/float(len(v)))
return avgvalues,stocki
ora la mia domanda è suppongo di avere:
stockslist={"APPLE":[1,2,3],"TESLA":[4,5,6],"GOOGLE":[7,8,9]}
Non voglio creare un elenco con il valore medio per i valori di Apple e così via. Questo è stato spiegato molte volte prima su Stack Exchange
Voglio ottenere una lista che comprende la media in un modo progressivo a coppie quindi AVGVALUE sarebbe avgvalues = [1 + 4 + 7/3, avg di 2Nd valori di Stockslist e così via ..]
Quindi non come nel mio codice sopra, dove calcolo la media per azione e poi la aggiungo.