2016-03-23 10 views
-1

Ich muss einige .csv Dateien lesen und einige Operationen ausführen. Insbesondere muss ich .csv lesen, wo die Daten in verschiedenen Spalten gespeichert sind. Insbesondere müssen die Daten folgendes Format:Python: Wie CSV-Datei auf eine effiziente Weise zu lesen?

myfile_0.csv 

Time InfD Com ComN 
    0 3  4 0 
    1 2  5 1 

Die Datei viele Einträge enthält, und ich habe zu tun, dass für verschiedene parameters eine der Prozess sehr langsam ist. Im Folgenden wird die Aufgabe, die ich

for i in parameters: 
    f = folder+'myfile_%d.csv'%i 
    df = pd.read_csv(f) 
    D = df.InfD/V 
    C = (df.Com/df.ComN) 
    size = TC - len(C) 
    if len(C) < TC: 
     CC = np.lib.pad(C, (0,size), 'constant', constant_values=(1)) 
     DD = np.lib.pad(D, (0,size), 'constant', constant_values=(0)) 
     cf = CC*(1-DD) 
    else: 
     C = C[0:TC] 
     D = D[0:TC] 
     cf = C*(1-D) 

Ich frage mich, zu tun haben, wenn es eine effizientere ist das gleiche Problem zu lösen.

+0

Sie haben werden, um eine ganze Datei für jeden Wert in 'parameters' zu lesen. Es gibt keinen Weg dahin. –

+0

Versuchen Sie, [line_profiler] (https://github.com/rkern/line_profiler) zu verwenden, um den Engpass zu identifizieren, und optimieren Sie dann diese Zeilen. Auch Ihre Frage ist im Moment eine Ja/Nein-Frage und die Antwort ist "Ja, wahrscheinlich." – ChrisP

+0

Ich dachte, "Import CSV" statt Pandas Datareframe – emax

Antwort

0

Versuchen Sie, den Python csv library

import csv 
with open('myfile_0.csv', 'rb') as csvfile: 
    reader = csv.reader(csvfile, delimiter=' ', quotechar='|') 
    for row in reader: 
     print ', '.join(row) 

# output: 
# Time, InfD, Com, ComN 
# 0, 3, 4, 0 
# 1, 2, 5, 1 
Verwandte Themen