2013-09-29 16 views
25

Próbowałem wykreślić wykres z szeregów czasowych z pliku CSV. Udało mi się odczytać plik i przekonwertować dane z ciągu do daty przy użyciu strptime i zapisać na liście. Kiedy próbowałem wykreślić wykres testowy w matplotlib z listą zawierającą informację o dacie, narysowałem datę jako serię kropek; to znaczy, dla daty 2012-maj-31 19:00, mam działkę z kropką na 2012, 05, 19, 31, 00 na osi y dla wartości x = 1 i tak dalej. Rozumiem, że to nie jest poprawny sposób przekazywania informacji o dacie do kreślenia. Czy ktoś może mi powiedzieć, jak poprawnie przekazać te informacje.Jak wykreślić szereg czasowy w pythonie

Odpowiedz

70

Konwersja danych oś X z tekstu datetime.datetime użyć datetime.strptime:

>>> from datetime import datetime 
>>> datetime.strptime("2012-may-31 19:00", "%Y-%b-%d %H:%M") 
datetime.datetime(2012, 5, 31, 19, 0) 

Jest to przykład, w jaki sposób wykreślić dane raz masz tablicę datetimes:

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

x = np.array([datetime.datetime(2013, 9, 28, i, 0) for i in range(24)]) 
y = np.random.randint(100, size=x.shape) 

plt.plot(x,y) 
plt.show() 

enter image description here

+1

Dziękuję. Używałem time.srtptime() zamiast datetime.strptime() i to było przyczyną problemu. – Mohanasundar

+4

Jeśli uważasz, że odpowiedź jest przydatna, sposób, aby podziękować w SO jest przez upvoting/accepting (kliknięcie przycisku up lub na czeku) odpowiedź :) – jabaldonedo

+2

@jabaldonedo wtedy zrobię ci awans. Nice avatar btw :) – RickyA