@Keranie: Das ist so kaputt dass Du am besten noch mal komplett neu anfängst.
*Entwickle* das Programm Stück für Stück und teste regelmässig ob das Teilprogramm bis dahin das macht was es soll. Du könntest mit einem Programm anfangen das einfach nur die Zeilen der Datei über einen `csv.reader()` einliesst und mit `print()` ausgibt. Testen ob das funktioniert, falls nicht korrigieren bis es funktioniert.
Dann könntest Du die Kopfzeile überlesen und entweder an einen Namen binden oder verwerfen, je nach dem ob Du den Inhalt noch brauchst. Die `next()`-Funktion erwähnte ich ja schon. Nicht ohne Grund. Wieder testen und erst über weitere Funktionalität nachdenken wenn das funktioniert.
Dann könntest Du das Programm so erweitern das aus den Zeilen die Informationen heraus gepickt und ausgegeben werden, die am Ende geplottet werden sollen. Testen. Erst weitermachen wenn das funktioniert.
Dann könntest Du die Informationen in die entsprechenden Datentypen umwandeln bevor sie ausgegeben werden. Wieder testen. Erst weitermachen wenn das funktioniert.
Dann könntest Du die Daten die nun in der richtigen Form vorliegen plotten.
Programmieren funktioniert nicht in dem man sich den Code zusammenrät. So sieht aber ein Grossteil des Quelltextes aus. Da wurde offensichtlich nicht darüber nachgedacht welchen Datentyp die Werte haben und welche Operationen sich daraus ergeben — und welche ganz sicher nicht. Zeichenketten haben zum Beispiel keine `append()`-Methode. Wenn man also eine Zeichenkette an einen Namen bindet, dann kann man über diesen Namen in der nächsten Quelltextzeile ganz sicher keine `append()`-Methode aufrufen.
Sternchen-Importe sollte man vermeiden. Da weiss man am Ende nicht mehr welcher Name eigentlich aus welchem Modul kommt. Man riskiert Namenskollisionen. Insbesondere bei Modulen wie `numpy` die *sehr* viele Namen enthalten:
Code: Alles auswählen
In [11]: import numpy as np
In [12]: len(dir(np))
Out[12]: 571
Dateien die man öffnet sollte man auch wieder schliessen. Am einfachsten und sichersten geht das wenn man `open()` zusammen mit der ``with``-Anweisung verwendet.
Namen sollten nicht aus kryptischen Kürzeln bestehen sondern dem Leser vermitteln was der Wert hinter dem Namen im Kontext des Programms bedeutet.