2017-11-14 2 views
0

Ich möchte eine .csv-Datei mit 3 Spalten importieren, wobei Spalte 1 meine X-Werte, Spalte 2 eine Serie und Spalte 3 eine andere ist. Ich möchte beide Serien in einem Diagramm darstellen, aber wenn ich versuche, die CSV-Datei zu lesen und zu plotten, wird ein ValueError zurückgegeben (siehe unten).genfromtext lesen .csv mit 3 Spalten gibt ValueError 'hat 3 Spalten statt 2'?

import matplotlib.pyplot as plt 
import numpy as np 

dir = "" 
file = "fig1data.csv" 
fn = np.genfromtxt(file, delimiter=',') 
x=fn[:,0] 
y1=fn[:,1] 
y2=fn[:,2] 
plt.plot(x, y1, 'b', label=r"1913-1942 anomaly") 
plt.plot(x, y2, 'r', label=r"$blah$") 
plt.show() 

gibt den Fehler:

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-56-0d8440895d40> in <module>() 
     4 dir = "" 
     5 file = "fig1data.csv" 
----> 6 fn = np.genfromtxt(file, delimiter=',') 
     7 x=fn[:,0] 
     8 y1=fn[:,1] 

/usr/lib64/python3.4/site-packages/numpy/lib/npyio.py in genfromtxt(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows) 
    1767    # Raise an exception ? 
    1768    if invalid_raise: 
-> 1769     raise ValueError(errmsg) 
    1770    # Issue a warning ? 
    1771    else: 

ValueError: Some errors were detected ! 
    Line #2 (got 3 columns instead of 2) 
    Line #3 (got 3 columns instead of 2) 
    Line #4 (got 3 columns instead of 2) 
    Line #5 (got 3 columns instead of 2) 
    Line #6 (got 3 columns instead of 2) 

Antwort

0

Ist Ihre CSV-Datei korrekt formatiert?

Ich war in der Lage, Ihren Code zu bekommen mit einer CSV-Datei zu arbeiten, der so aussah:

col1,col2,col3 
0,0.0236852314846,10 
1,0.0240463281472,20 
2,0.0176584073052,30 
3,0.0147662342087,40 
4,0.0345340419842,50 

Allerdings, wenn ich den „col3“ namen entfernt, ich den Fehler bekam, die Sie sehen. Daher kann es zu Abweichungen zwischen der Anzahl der Spaltennamen und der Anzahl der Datenspalten kommen.

+0

@DavidG Ja, ich glaube schon. Ich habe 3 Spalten mit Kopfzeilen. Das einzige Problem, das ich sehen konnte, wären fehlende Werte. Siehe die ersten paar Zeilen meiner Daten: Jahr Anomalie, global 1880 ,, 1881,3.178055556, 1882,0.678055556, -4,6 1883 -,980277778, -4,7 1884 -2,888611111, -5,2 1885 , 1.444722222, -5.9 – vitalie

+0

@vitalien Sind die beiden Kommata nach "1880" in Ihrer ersten Datenzeile ein Tippfehler? Denn es sollte nur ein einziges Komma geben, das Elemente in einer Reihe trennt. Sind Ihre Zeilen auch durch Zeilenumbrüche oder Leerzeichen getrennt? Könnten Sie Ihre ersten paar Zeilen wie oben beschrieben posten, um das klarzustellen? –

+0

Ich habe es tatsächlich behoben, Ihr Kommentar hat dazu beigetragen, dass aus irgendeinem Grund keine Header einen Fehler verursacht haben. Ich wechselte zu np.loadtxt() und fügte Header hinzu, die das Problem behob. Für die Aufzeichnung, diese beiden Kommas waren kein Tippfehler, sie sollen ein 3-Spalten-Feld, das zwei fehlende Datenpunkte hat – vitalie