Seite 1 von 1
Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 10:25
von TheLüddy
Hallo liebes Forum, ich habe da ein gewisses Problem was die Extraktion und Verarbeitung von Daten angeht. Ich wollte aus einer CSV Datei einige Punkte auslesen und danach den Maximalwert berechnen, jedoch stosse ich dabei auf gewisse Probleme. Ich habe auch schon einiges zu diesem Thema gelesen, habe aber keine passende Antwort gefunden. Könnt Ihr mir helfen?
Anbei der Code:
Code: Alles auswählen
import csv
reader = list(csv.reader(open("specimen_1_data.csv")))
del reader[0]
for row in reader:
print((row[1]))
Soweit bin ich gekommen, ich habe eine Spalte mit all meinen Werten, welche etwa 0.001-0.003 betragen (7 Nachkommastellen). Wie kann ich daraus mein Maximum rauslesen? Danke im Voraus!
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 10:40
von Kebap
Das geht mit einer Liste und der max() Funktion.
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 10:46
von snafu
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 11:00
von TheLüddy
Oh vielen Dank! Klappt fast problemfrei, ein kleines Problem wäre da aber noch. Nun gibt es mir den Maximalwert dies an:
5.25864e-17
Das sollte aber logischerweise das Minimum sein. Wie kann ich dies ändern?
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:07
von Sirius3
@TheLüddy: wie soll jemand sagen, was das Maximum ist, wenn niemand die Zahlen kennt?
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:18
von TheLüddy
Ja hast schon recht, tut mir leid. alle anderen Zahlen sind so 0.0018993, 0.0019274, usw. und dann eben noch diese 5.25864e-17.
Ich denke dass Problem ist, dass 'e-17' ignoriert bzw nicht erkannt wird und somit das Programm 5.25864 als Maximum angibt.
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:20
von __deets__
Dann liest du die Zahl falsch ein, denn float kann das in Python:
Code: Alles auswählen
beer:Source deets$ python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 12:54:16)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> float("5.25864e-17")
5.25864e-17
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:24
von TheLüddy
Kannst du mir sagen wo der Fehler liegt? Ich seh ihn nicht..
Code: Alles auswählen
import csv
reader = list(csv.reader(open("specimen_1_data.csv")))
del reader[0]
print("Der Maximalwert lautet: ", max(row[1] for row in reader))
print("Der Minimalwert lautet: ", min(row[1] for row in reader))
del reader[0] ist um die erste Zeile zu löschen welche nur Buchstaben und keine Zahlen hat.
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:31
von __deets__
Du konvertiest ja nicht, sondern behandelst alles als strings. Du musst deine Werte schon mit float(...) in Fliesskommazahlen wandeln. Sonst werden die einfach lexikographisch sortiert.
Und noch ein Nachtrag: "reader" fuer die Liste der Werte ist ein sehr schlechter Name, weil es impliziert, dass dies der CSV-reader waere. Statt die Daten, die aus ihm gelesen wurden. Benenn das bessert "rows" oder "data_rows" oder so was aehnliches.
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:37
von Sirius3
Und statt den Header mitzulesen um in danach wegzuwerfen, solltest Du ihn sofort ignorieren:
Code: Alles auswählen
with open("specimen_1_data.csv") as lines:
reader = csv.reader()
_ = next(reader) # ignore header
values = list(reader) # hier fehlt noch das Umwandeln in floats.
Und am besten liest Du die Zahlen gleich mit numpy ein.
Re: Aus CSV Daten auslesen und Max bzw Min bestimmen
Verfasst: Freitag 27. April 2018, 13:39
von TheLüddy
Jaa hat funktioniert

Vielen Dank! Nehme mir deinen Tipp zu Herzen.