OPENPYXL tutorial / aiuto con MEDICO DIZIONARIO

-7

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.

  1. Passaggio 1 dovrebbero leggere le colonne e differenziare tra i nomi
  2. passaggio 2 crea un dizionario da quelle colonne con la chiave come nome dello stock
  3. 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.

    
posta jerreyz 21.03.2016 - 22:48
fonte

1 risposta

1

Mi rendo conto che quello che stavo facendo era semplicemente un'aggiunta a coppie dei valori di un dizionario. Questo è stato risolto prima su Stack Exchange, quindi questa domanda può essere chiusa.

Questo era semplicemente perché non avevo mai sentito parlare della funzione zip in precedenza.

Cordiali saluti, ecco la risposta corretta:

     def CalcAverage(Stockslist,stock):
          stock_values=Stockslist.pop(stock)#remove stock we wanna exclude from dictionary



           avgvalues=[sum(i)/float(len(i)) for i in zip(*Stockslist.itervalues())]

           return avgvalues,stock_values


          stockslist={"APPLE":[1,2,3],"TESLA":[4,5,6],"GOOGLE":[7,8,9]}

          CalcAverage(stockslist,"GOOGLE")
    
risposta data 22.03.2016 - 11:46
fonte

Leggi altre domande sui tag