2016-10-31 14 views
1

Ich habe eine CSV-Datei mit [NEAR_DIST] (< - Zeile 7). Ich würde gerne wissen, wie ich den Mittelwert und STD dieses Arrays bekommen kann.Python: Konnte Zeichenfolge nicht in Float-Fehler konvertieren

verwendete ich CSV und numpy:

# -*- coding: utf-8 -*- 
import csv 
import numpy 

with open('C:\\test.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 
    distance = [] 
    distance.append(float(x) for x in csvfile) 
    for row in readCSV: 
     distance = row[7] 
     a = numpy.array(distance, dtype = 'float_') 
     b = numpy.sum(a) 
     print(b) 
+0

Beispiel für einige Zeilen Form der Datei wäre nützlich. – Marcin

+0

Was @Marcin sagte ebenso wie der genaue Fehler mit der Linie und so wäre hilfreich für jemanden, der Ihnen antworten will. –

+0

Verwenden Sie 'numpy.genfromtxt' anstelle von python' csv' für eine natürlichere und wahrscheinlich schnellere Leistung – AbdealiJK

Antwort

0

Die Frage ist ein wenig unklar. Meine Vermutung ist, dass Sie einige Daten des Formulars haben:

01,02,03,04,05,06,07,08,09 ..
11,12,13,14,15,16 , 17,18,19, ..
21,22,23,24,25,26,27,28,29, ..
und Sie möchten die Summe der Elemente in der 7. Spalte finden. d.h. 7 + 17 + 27 + ... in diesem Beispiel.

sollte diese Arbeit:

import numpy 
data = numpy.genfromtxt("a.csv", delimiter=",") 
data[:, 6].sum() # 6 because indices start from 0 in python 
0

Wenn ich Ihre Frage und Code richtig verstehen, können Sie die siebte Zeile in der CSV-Datei lesen möchten. Dies wird nicht mit Ihrer Zeile [7] Anweisung getan. Wenn Sie das tun:

for row in readCSV: 

Sie gehen durch alle Zeilen in Ihrer CSV-Datei, einer nach dem anderen zu lesen und es als row speichern. Mit einem Trennzeichen (in diesem Fall ein Komma) wird alles zwischen Kommas zu einer Liste hinzugefügt. Zum Beispiel würde die Zeile "0,12,23,37.154,444" in Ihrer CSV-Datei in der folgenden Liste enden: [0,12,23,37.154,444] mit 5 Elementen.

Wenn Sie auf row[7] zugreifen, nehmen Sie die acht Spalte Ihres aktuellen row in die Schleife (denken Sie daran, dass Python beginnt, bei 0 zu zählen).

Auch Ihre distance Variable, die Sie am Anfang definieren, wird von der distance Variable in Ihrer for row in readCSV: Schleife überschrieben.

Wenn Sie also die siebte Zeile in Ihrer Datei haben möchten, empfehle ich, mit einem Zähler zu arbeiten, der zählt, wie viele Zeilen Sie bereits passiert haben. Wenn es die siebte Zeile erreicht hat, fügt es nur bis alle Zahlen dieser Zeile und speichert sie:

import csv 
with open('C:\\test.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 

    # Create counter variable to count rows 
    rowCounter = 0 

    # Create distance variable to sum distances later 
    distance = 0 

    # Go through each row in the csv file 
    for row in readCSV: 
     rowCounter += 1 # Add one to the rowCounter 
     if rowCounter == 7: # If rowCounter is seventh row 
      for e in row: # For every element in this row 
       distance += float(e) # Add the float of that element to distance 

Wenn dies nicht hilfreich war, schlage ich in Ihrer Frage präziser zu sein.

Verwandte Themen