2017-11-13 8 views
-2

Ich habe eine CSV-Datei, die zwei Spalten von Daten enthält, die erste Spalte ist Zeit im 24-Stunden-Format, d. H. 13h20m10s.Python Matplotlib Grafik generieren von CSV

Ich versuche, diese Daten herauszuziehen und es in einem Diagramm mit Matplotlib zu plotten. Ich habe diese Zeile Code:

x = [mdates.date2num(dt.datetime.strptime(x[0], '%H')) for x in data] 

das Skript:

data = np.genfromtxt('graph.csv', dtype='str', delimiter =',', skip_header=0, usecols=[0], autostrip='true') 

x = [mdates.date2num(dt.datetime.strptime(x[0], '%Hh:%Mm:%Ss')) for x in data] 
print(x) 
y = np.loadtxt('graph.csv', delimiter=',', skiprows=0,usecols=[1]) 
print(y) 

Allerdings, wenn ich es laufen lasse, bekomme ich die Fehler

"ValueError: time data '1' does no match format '%Hh:%Mm%Ss'

, wenn ich den Code für die x Daten zu ändern läuft, aber meine Zeitwerte sind dann falsch ... offensichtlich.

Kann jemand helfen mit, warum es nicht richtig plant?

+1

Die Formatzeichenfolge muss mit den Daten übereinstimmen. Wenn die Daten "13h20m10s" sind, muss die Formatzeichenfolge "% Hh% Mm% Ss" lauten. – ImportanceOfBeingErnest

Antwort

-1

Das Problem ist die: Markierungen. Sie haben diese nicht in der von Ihnen beschriebenen Zeitspalte

import datetime as dt 
dateString='13h20m10s' 
date_with_format = dt.datetime.strptime(dateString,'%Hh%Mm%Ss') 
+0

danke - Ich habe das neu formatiert, und wenn ich das Skript ausführen, die print (x) -Funktion gibt Werte zurück, die zum Beispiel - 14h58m39s wird in 693596.6240625 konvertiert - ich bin mir nicht sicher, was hier vor sich geht? – CPS13

+0

Da 14h58m39s kein Begleitdatum hat, wird angenommen, dass es der 1900-01-01 14:58:39 ist. Daher teilt Ihnen die Nummer 693596.6240625 mit, dass 1900-01-01 14:58:39 (693596.6240625 - 1) Tage nach dem 0001-01-01 00:00 ist. – ImportanceOfBeingErnest

+0

Das sind Tage seit 0001-01-01 00:00:00 und ist das Ergebnis von date2num, Überprüfen Sie mehr dazu hier (https://matplotlib.org/api/dates_api.html). Wenn Sie einfach die Datetime möchten, können Sie date2num löschen, was ich in meinem Beispiel getan habe. –

Verwandte Themen