Auswählen und Betreiben von Spalten in einem .csv

Ich habe eine csv mit 38 Spalten und 1500 + Zeilen, die Schwimmer und Strings enthält. Ich möchte 3 Spalten (x, y, z) von float Daten aus diesem Satz, um den Durchschnitt von f=(x+y)/z . Nach der Forschung habe ich diese Spalten erfolgreich als numpy Arrays isoliert und f=(x+y)/z . Nun, wenn ich versuche zu summen f das Array wird nicht addiert. Ich drucke f Und ich sehe 1500 Artikel von korrekten Werten, aber nicht die Summe dieser.

  reader=csv.reader(open('myfile.csv' ,"rb"),delimiter=',') reader.next() reader.next() x=list(reader) data=numpy.array(x) rows=data.shape[0] for i in range (0,rows): x=numpy.array(data[i,18]).astype('float') y=numpy.array(data[i,19]).astype('float') z=numpy.array(data[i,6]).astype('float') f=numpy.array((x+y)/z) average=numpy.sum(f)/rows print average 

  • Setuptools: Datendateien enthalten mit `bdist` aber nicht mit` sdist`
  • Was sind gute Verwendungen für Python3's "Function Annotations"
  • Deaktivieren Sie Warnungen aus scipy
  • Um die Wortfrequenz in mehreren Dokumenten zu zählen python
  • Rufen Sie die Python-Funktion aus c # (.NET)
  • Erhalte den Dateipfad aus Binärdaten
  • 3 Solutions collect form web for “Auswählen und Betreiben von Spalten in einem .csv”

    Wenn data bereits ein Array sind, brauchst du nicht die for Schleife:

     x = data[:, 18].astype(float) y = data[:, 19].astype(float) z = data[:, 6].astype(float) f = (x+y) / z average = np.average(f) 

    Sie würden wahrscheinlich besser sein, indem Sie Ihre Datei mit np.loadtxt :

     data = np.loadtxt('myfile.csv', dtype=float, delimiter=',' skiprows=2, usecols=(6, 18, 19)) 

    Oder x , y und z direkt zu bekommen:

     x, y, z = np.loadtxt('myfile.csv', dtype=float, delimiter=',' skiprows=2, usecols=(6, 18, 19), unpack=True) 

    Numpy erlaubt Ihnen, auf den Arrays als Ganzes zu operieren, Sie brauchen nicht, durch sie zu iterieren.

     reader=csv.reader(open('myfile.csv' ,"rb"),delimiter=',') reader.next() reader.next() x=list(reader) data=numpy.array(x) rows=data.shape[0] x=data[:,18].astype('float') y=data[:,19].astype('float') z=data[:,6].astype('float') f = (x + y) / z average = f.mean() print average 

    Wenn du nicht in numpy hier eingesperrt bist, ist eine reine Python-Lösung,

     import csv def f(x, y, z): x = float(x) y = float(y) z = float(z) return (x+y)/z reader = csv.reader(open("derp.csv", 'r')) rows = list(reader) len_of_rows = len(rows) f_values = [] for row in rows: x = row[0] y = row[1] z = row[2] f_values.append(f(x, y, z)) average = sum(f_values)/len_of_rows print average 

    Hier ist, wie meine derp.csv aussieht

     1,2,3 4,5,6 7,8,9 
    Python ist die beste Programmiersprache der Welt.