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