Zeitreihe plotten

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
PaulchenPanther
User
Beiträge: 16
Registriert: Freitag 13. Juli 2012, 17:17

Ich bräuchte Hilfe bei der Lösung des folgenden Problems:

Ich möchte die Daten einer .txt-Datei, die so aufgebaut ist:
2012-06-16 10:27:14 0.109973482788
2012-06-16 10:30:36 0.108931720257
2012-06-16 10:32:22 0.11300355196
...
plotten.
Es handelt sich also um drei Spalten, getrennt durch ein Leerzeichen, die erste beschreibt den Tag, die zweite die Uhrzeit und die dritte das Messsignal.
Ziel ist, das Messsignal in Abhängigkeit von der Zeit zu plotten.
Ich habe Schwierigkeiten, die Datumsangaben (Tag und Uhrzeit) so "umzuformatieren", dass sie als Zeitstrahl (x-Achse) geplottet werden können.

Eine Idee war

Code: Alles auswählen

file = open("./....txt",'r')
try:
	while 1:
		zeile = file.readline()
		liste = zeile.split(' ')
		print liste [0] 
                print liste [1]
except:
	file.close()
um irgendwie erstmal an die einzelnen Spalten "ranzukommen". Klappt aber nicht.

Außerdem starre ich seit geraumer Zeit immer wieder auf folgende Seite
http://docs.python.org/library/time.htm ... truct_time
und weiß, dass da eigentlich alles steht, was ich zur Lösung brauche. Ich checke es aber gerade trotzdem nicht und hoffe deswegen hier auf den entscheidenden Hinweis in die richtige Richtung. Vielen Dank schon im Vorraus.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Code: Alles auswählen

>>> line = "2012-06-16 10:27:14 0.109973482788"
>>> line.rsplit(' ', 1)
['2012-06-16 10:27:14', '0.109973482788']
>>> timestamp, value = line.rsplit(' ', 1)
>>> timestamp
'2012-06-16 10:27:14'
>>> from time import strptime
>>> strptime(timestamp, '%Y-%m-%d %H:%M:%S')
time.struct_time(tm_year=2012, tm_mon=6, tm_mday=16, tm_hour=10, tm_min=27, tm_sec=14, tm_wday=5, tm_yday=168, tm_isdst=-1)
Und was die Daten angeht: Öffne die Datei mit dem with-statement, packe den gesamten Datei-Inhalt (Datei-Objekte haben eine Methode um alles in einem Rutsch einzulesen) in Zeilen getrennt (dafür gibt es split) in eine Liste und nutze eine for-Schleife um über die ganze Liste zu iterieren (à la ``for line in lines:``). Dabei kannst du jede drankommende Zeile dann wie in meinem Beispiel oben verarbeiten.
Antworten