2017-04-10 16 views
1

私はcsvからデータを読み込み、matplotlib散布図に表示しようとしています。ここでX軸にはdatetimeの書式が設定されています。これはデータです:strptimeを使用してdatetimeを解析できません

0,03/12/2017 21:00:00.000 +0000,4745 
0,03/12/2017 22:00:00.000 +0000,3046 
0,03/12/2017 23:00:00.000 +0000,2052 
0,03/13/2017 00:00:00.000 +0000,1455 
2,03/13/2017 00:00:00.000 +0000,2 
1,03/13/2017 00:00:00.000 +0000,2 

そして、私が使用Python3.4コード:

import numpy as np 
import matplotlib.pyplot as plt 
import datetime as dt 

retries, count = np.loadtxt(open('search-results.csv', 'r'), 
        delimiter=",", 
        skiprows=1, 
        unpack=True, 
        usecols=[0, 2]) 

time = np.loadtxt(open('search-results.csv', 'r'), 
        delimiter=",", 
        skiprows=1, 
        unpack=True, 
        usecols=[1], 
        dtype=str) 

dates = [dt.datetime.strptime(str(d), "b'%d/%m/%Y %H:%M:%S.000 +0000'") for d in time] 

plt.scatter(dates, retries, s=count) 
plt.grid(which='both', color='#aaaaaa') 
plt.savefig('out.png', format='png') 

私は上記のコードを実行すると、それは13日目に到達するまで、データを解析しているように見える:

ValueError: time data "b'03/13/2017 00:00:00.000 +0000'" does not match format "b'%d/%m/%Y %H:%M:%S.000 +0000'" 

答えて

1

TL; DR:

あなたはfollowiを変更する必要がありますこれに

dates = [dt.datetime.strptime(str(d), "b'%d/%m/%Y %H:%M:%S.000 +0000'") for d in time] 

dates = [dt.datetime.strptime(str(d), "b'%m/%d/%Y %H:%M:%S.000 +0000'") for d in time] 

さてあなたのようにフォーマットさ、日付を期待するようにコードを言っているので、あなたが取得しているエラーは、正しいです:このからのNGライン"b'%d/%m/%Y %H:%M:%S.000 +0000'"が、

"b'%m/%d/%Y %H:%M:%S.000 +0000'" (interchanged month and date). 

あなたのコードは最初の3行に渡って動作します。月の範囲は1年ですが、4行目で13になると壊れます!

幸運:)

+0

ええ、私はそうかみ合うようです – ftraian

+0

:-)休憩を取る必要があります:) –

関連する問題