Seite 1 von 1
Csv lesen
Verfasst: Montag 5. August 2013, 11:02
von Marleb
Hallo, ich möchte daten aus einer csv. datei lesen aber am ende kommt ein Fehler: invalid syntax bei plt.show(). Warum?
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt
data = np.genfromtxt('P:\...\Example.csv', dtype('f8'), delimiter=',')
fig = plt.figure()
ax1.plot(float(data['0']), float(data['1']), color='r', label='the data'
plt.show()
Re: Csv lesen
Verfasst: Montag 5. August 2013, 11:12
von BlackJack
@Marleb: Weil in der Zeile davor eine Klammer fehlt.
Re: Csv lesen
Verfasst: Montag 5. August 2013, 11:30
von georgebaker
Es fehlt auch noch die Definition für ax1. (Subplot)
Hier eine Version für eine .csv mit folgender Struktur:
x,y
0,1
1,2
2,3
.....
Code: Alles auswählen
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt
data = np.genfromtxt('Example.csv', delimiter=',', names = True)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(data['x'], data['y'], color='r', label='the data')
plt.show()
Am besten schaust du mal bei
http://matplotlib.org/examples/ vorbei. Da gibt es haufenweise Beispiele zur Verwendung von matplotlib. Daraus lernt man am meisten.
Re: Csv lesen
Verfasst: Montag 5. August 2013, 12:01
von Marleb
Danke, aber dann bekomme ich "ValueError:invalid literal for float():2;
in linie 8 data=
Re: Csv lesen
Verfasst: Montag 5. August 2013, 12:21
von georgebaker
Wie sieht deine .csv aus? Bei mir funktionieren Gleitkommazahlen ohne Probleme.
Re: Csv lesen
Verfasst: Montag 5. August 2013, 12:26
von BlackJack
@Marleb: Die Ziffer 2 gefolgt von einem Semikolon ist ja auch keine gültige Darstellung einer Gleitkommazahl.
Code: Alles auswählen
In [1]: float('2;')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/bj/<ipython-input-1-581309b5305a> in <module>()
----> 1 float('2;')
ValueError: invalid literal for float(): 2;
Re: Csv lesen
Verfasst: Montag 5. August 2013, 12:41
von Marleb
@georgebaker
spielt es eine rolle unter welchem csv gespeichet wird (Ms-dos, treenzeichen-getrennt)?das zellenformat is standard?
Re: Csv lesen
Verfasst: Montag 5. August 2013, 12:47
von Marleb
Mittlwerweile bekomme ich bekomme ich "ValueError:invalid literal for float():2;3
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:00
von georgebaker
Die Speicherung sollte egal sein, das Wichtigste ist der Feldtrenner. Deine Fehlermeldung deutet auf einen Fehler mit dem Komma (Punkt) für Gleitkommazahlen oder dem Feldtrenner hin.
Probier mal folgendes:
Code: Alles auswählen
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt
data = np.genfromtxt('Example.csv', delimiter=';', names = True)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(data['x'], data['y'], color='r', label='the data')
plt.show()
Das wäre für eine .csv mit folgendem Inhalt:
x;y
1;2
2;3
2;1.5
...
Falls das nicht funktionieren sollte, poste am besten ein paar Einträge deiner .csv Datei.
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:21
von Marleb
habs schon mit deinem ansatz versucht, darauf bezieht sich die letzte gepostete fehlermeldung
meine tabelle ist
x y
2 3
3 5
4 4
5 6
6 7
7 4
8 6
9 6
10 6
11 6
12 4
13 6
und fängt in A1 an
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:30
von georgebaker
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
from numpy import genfromtxt
data = np.genfromtxt('Example.csv', delimiter=' ', names = True)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(data['x'], data['y'], color='r', label='the data')
plt.show()
Damit sollte es gehen. In der 5. Zeile findest du den Parameter delimiter=' ' Mit diesem Parameter definierst du den Feldtrenner.
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:38
von BlackJack
@Marleb: Da Semikolons die Fehlermeldungen auslösen können Deine Daten nicht so aussehen wie Du behauptest. Wie sehen sie denn nun *tatsächlich* aus?
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:39
von Marleb
Sorry, die Fehlermeldung bleibt die gleiche, ...for float():2;3
Re: Csv lesen
Verfasst: Montag 5. August 2013, 13:40
von Marleb
Stop, es funtkioniert. DANKE