> > From: vittorio.zucc...@gmail.com > > Date: Thu, 2 Sep 2010 14:41:10 +0200 > > To: python@lists.python.it > > Subject: [Python] Algoritmo in CSV > > Buongiorno,
> > chiedo consiglio su un algoritmo da usare che sia veloce. > > Anche solo in meta-codice. > > Problema: > > - carico un CSV con 200 colonne e 2 milioni di righe > > - voglio trovare la lunghezza maggiore per ogni campo > > Ecco: il mio problema è che vengono effettuati 200*2.000.000 di IF e > > la cosa non mi piace molto. > > Qualcuno ha un consiglio per ottimizzare? Si potrebbe 1) Aumentare l'approssimazione, se non è richiesta l'assoluta precisione. Ad esempio, si potrebbe fare una valutazione statistica delle prime X righe, vedere qual'è grossomodo la distribuzione e approssimare una stima. Se la questione che devi creare un campo abbastanza largo per contenere i dati della colonna, ma senza sprecare spazio, puoi abbondare sulla stima dello spazio richiesto di qualche punto. 2) Fare delle generalizzazioni: assumere magari che se la singola linea del CSV è più corta di Y, quella riga sicuramente non conterrà i record più lunghi. Può essere utile se i campi hanno più o meno una grandezza sempre uguale e non sono descrittivi o note 3) Credo che invece di spezzare il CSV in stringhe, e poi calcolarne la lunghezza, si possa leggere l'intero file memorizzando le posizioni di virgole e acapo, leggendo un carattere alla volta. Forse può aiutare con le prestazioni, lasciando fuori lo spezzettamento della riga del CSV, la relativa memorizzazione, la creazione di un dizionario, etc. Dipende molto se questo algoritmo lo devi usare una o più volte, sullo stesso CSV o su tanti CSV diversi... Altrimenti se devi lavorare a lungo su una bestia del genere e non solo confrontare le lunghezze, ti direi di mettere tutto in un db. Comunque che un po' di letteratura online ci sia a riguardo dei grandi dataset. > > Grazie in anticipo. ------- Wyrmskull <lordkran...@gmail.com> _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python