2013-09-29 2 views
25

Я пытаюсь построить график временных рядов из файла CSV. Мне удалось прочитать файл и преобразовать данные из строки в дату с помощью strptime и сохранить в списке. Когда я попытался построить тестовый график в matplotlib со списком, содержащим информацию о дате, он наметил дату в виде серии точек; то есть на дату 2012-май-31 19:00, я получил сюжет с точкой в ​​2012, 05, 19, 31, 00 по оси y для значения x = 1 и так далее. Я понимаю, что это неправильный способ передачи данных даты для построения графика. Может кто-нибудь сказать мне, как правильно передать эту информацию.Как построить временные ряды в python

ответ

70

Преобразование данных по оси X от текста к datetime.datetime используйте 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) 

Это пример того, как построить данные, когда у вас есть массив 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

спасибо. Я использовал time.srtptime() вместо datetime.strptime(), и это вызывало проблему. – Mohanasundar

+4

Если вы находите ответ полезным, способ сказать спасибо в SO - это активировать/принять (нажав клавишу «вверх» или на чеке) ответ: – jabaldonedo

+2

@jabaldonedo, тогда я подниму вас. Nice avatar btw :) – RickyA

Смежные вопросы