2017-11-13 21 views
-2

私は2列のデータを含むCSVファイルを持っています。最初の列は24時間形式の時間、つまり13h20m10sです。Python Matplotlib CSVからグラフを生成

私はこのデータを取り出し、matplotlibを使ってグラフにプロットしようとしています。

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

スクリプト:私はxデータ用のコードを変更した場合、私はそれを実行したときに

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) 

は、しかし、私はエラー

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

を得る:私は、このコード行を持っています実行されますが、私の時間の値は間違っています...明らかに。

正しくプロットされない理由を教えてもらえますか?

+1

フォーマット文字列はデータと一致する必要があります。データが '13h20m10s'の場合、フォーマット文字列は' '%Hh%Mm%Ss 'でなければなりません。 – ImportanceOfBeingErnest

答えて

-1

問題は:マークです。

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

ありがとう - 私はこれを再フォーマットし、スクリプトを実行すると、print(x)関数は値を返しています - たとえば、14h58m39sが693596.6240625に変換されました - 私はここで何が起こっているのか分かりませんか? – CPS13

+0

14h58m39sには日付が付いていないため、1900-01-01 14:58:39とみなされます。したがって、番号693596.6240625は、0001-01-01 00:00の後の(693596.6240625 - 1)日の1900-01-01 14:58:39であることを伝えます。 – ImportanceOfBeingErnest

+0

これは0001-01-01 00:00:00からの日であり、date2numの結果、 をここで確認してください(https://matplotlib.org/api/dates_api.html)。単にdatetimeが必要な場合は、私の例で行ったことであるdate2numを削除することができます。 –

関連する問題