Hi!
Ich habe folgendes Problem. ich versuche gerade in python messwerte aus einem csv-File (Ursprung deutsche Openoffice calc-Datei) einzulesen. Nach einigem herumprobieren ist mir dies auch gelungen, allerdings auf wie ich finde sehr kopliziertem Wege (Einlesen in Liste, extrahieren in ein Array, ersetzen des Kommas durch einen Punkt und letztenendes Casten von String in Float), aber das nur nebenbei, vielleicht kennt jemand von Euch ja eine raffiniertere und effizientere Methode.
Mein Hauptproblem ist allerdings wie ich aus meinen Daten ein Histogramm mit relativen Häufigkeiten für meine Messwerte erstellen.
Vielen Dank,
DanielMamba
Relative Frequency, histogram
-
- User
- Beiträge: 28
- Registriert: Dienstag 27. Januar 2009, 14:20
OK hier das Codebeispiel:
data = zeros(1)
reader = csv.reader(open("***.csv"), delimiter=",")
for row in reader:
data = concatenate((data, row))
for ii in xrange(size(data)):
data[ii] = replace(data[ii], ",", ".")
data2 = zeros(size(data))
jj = 0
while jj < size(data):
data2[jj] = float(data[jj])
jj+=1
Problem: ich muesste noch das erste Item im Array Data löschen.
Vielen Dank für Eure Antworten,
DanielMamba
data = zeros(1)
reader = csv.reader(open("***.csv"), delimiter=",")
for row in reader:
data = concatenate((data, row))
for ii in xrange(size(data)):
data[ii] = replace(data[ii], ",", ".")
data2 = zeros(size(data))
jj = 0
while jj < size(data):
data2[jj] = float(data[jj])
jj+=1
Problem: ich muesste noch das erste Item im Array Data löschen.
Vielen Dank für Eure Antworten,
DanielMamba
-
- User
- Beiträge: 28
- Registriert: Dienstag 27. Januar 2009, 14:20
OK dann eben nochmal:
Problem: ich muesste noch das erste Item im Array Data löschen.
Vielen Dank für Eure Antworten,
DanielMamba[/code]
Code: Alles auswählen
data = zeros(1)
reader = csv.reader(open("***.csv"), delimiter=",")
for row in reader:
data = concatenate((data, row))
for ii in xrange(size(data)):
data[ii] = replace(data[ii], ",", ".")
data2 = zeros(size(data))
jj = 0
while jj < size(data):
data2[jj] = float(data[jj])
jj+=1
Vielen Dank für Eure Antworten,
DanielMamba[/code]
@DanielMamba: Das sieht in der Tat etwas umständlich aus. Es fehlen Informationen wie die Importe. Da würde ich mal auf `numpy` tippen!? Das würde ich erst im letzten Schritt verwenden weil `numpy`-Arrays bei normalen Python-Objekten wie Zeichenketten keinen wirklichen Vorteil bieten.
Warum verwendest Du zwei verschiedene Arten von Schleifen mit Index?
Wenn Du das erste Element nicht in das Array steckst, brauchst Du es später auch nicht löschen.
Ich würde die Daten wahrscheinlich in eine Liste einlesen und dabei auch schon in Fliesskommazahlen umwandeln und danach ein `numpy.array` daraus machen.
Ungetestet:
Warum verwendest Du zwei verschiedene Arten von Schleifen mit Index?
Wenn Du das erste Element nicht in das Array steckst, brauchst Du es später auch nicht löschen.
Ich würde die Daten wahrscheinlich in eine Liste einlesen und dabei auch schon in Fliesskommazahlen umwandeln und danach ein `numpy.array` daraus machen.
Ungetestet:
Code: Alles auswählen
import csv
from numpy import array
def main():
data_file = open('test.csv')
data = list()
for row in csv.reader(data_file, delimiter=','):
data.extend(float(s.replace(',', '.')) for s in row)
data_file.close()
data = array(data)
-
- User
- Beiträge: 28
- Registriert: Dienstag 27. Januar 2009, 14:20
HI,
vielen Dank für Eure Hilfe!!!
Viele Grüsse. DanielMamba
vielen Dank für Eure Hilfe!!!
Viele Grüsse. DanielMamba
Und numpy hat auch eine Histogramm-Funktion. Beispiele zu den Funktionen findest Du hier:
http://www.scipy.org/Numpy_Example_List_With_Doc
Und matplotlib (Beispiele auf der Seite) hat eine eingebaute Plotting-Funktion für Histogramme.
HTH
Christian
http://www.scipy.org/Numpy_Example_List_With_Doc
Und matplotlib (Beispiele auf der Seite) hat eine eingebaute Plotting-Funktion für Histogramme.
HTH
Christian