Csv lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

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()
BlackJack

@Marleb: Weil in der Zeile davor eine Klammer fehlt.
georgebaker
User
Beiträge: 25
Registriert: Freitag 12. April 2013, 19:53

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.
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

Danke, aber dann bekomme ich "ValueError:invalid literal for float():2;
in linie 8 data=
georgebaker
User
Beiträge: 25
Registriert: Freitag 12. April 2013, 19:53

Wie sieht deine .csv aus? Bei mir funktionieren Gleitkommazahlen ohne Probleme.
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;
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

@georgebaker

spielt es eine rolle unter welchem csv gespeichet wird (Ms-dos, treenzeichen-getrennt)?das zellenformat is standard?
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

Mittlwerweile bekomme ich bekomme ich "ValueError:invalid literal for float():2;3
georgebaker
User
Beiträge: 25
Registriert: Freitag 12. April 2013, 19:53

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.
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

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
georgebaker
User
Beiträge: 25
Registriert: Freitag 12. April 2013, 19:53

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.
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?
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

Sorry, die Fehlermeldung bleibt die gleiche, ...for float():2;3
Marleb
User
Beiträge: 22
Registriert: Montag 5. August 2013, 11:00

Stop, es funtkioniert. DANKE
Antworten