2016-04-05 1 views
0

Я пытаюсь построить даты из csv. file столбец против трех других столбцов чисел. Я новичок в python и до сих пор сумел импортировать столбцы в python и попытался прочитать их, имеет массив, но я не могу добавить их с модулем datetime и построить даты вдоль оси x вместе с моими данные.Задание даты из csv. файл в pylab

Пожалуйста, кто-нибудь может помочь?

На минуту я получаю сообщение об ошибке:

Traceback (most recent call last): 
File "H:\AppliedGIS\Python\woops.py", line 24, in <module> 
    date = datetime.datetime.strptime['x', '%d/%m/%Y'] 
AttributeError: type object 'datetime.datetime' has no attribute 'datetime' 

Но я уверен, что я буду неправ в более чем одном месте ...

Данные сама отформатирован в четырех столбцы и при печати выглядит следующим образом: ('04/03/2013 ', 7.0, 12.0, 17.0) ('11/03/2013', 23.0, 15.0, 23.0).

Вот полный код

import csv 
import numpy as np 
import pylab as pl 
import datetime 
from datetime import datetime 
data = np.genfromtxt('H:/AppliedGIS/Python/AssignmentData/GrowthDistribution/full.csv', names=True, usecols=(0, 1, 2, 3), delimiter= ',', dtype =[('Date', 'S10'),('HIGH', '<f8'), ('Medium', '<f8'), ('Low', '<f8')]) 
print data 

x = [foo['Date'] for foo in data] 
y = [foo['HIGH'] for foo in data] 
y2 = [foo['Medium'] for foo in data] 
y3 = [foo['Low'] for foo in data] 
print x, y, y2, y3 

dates = [] 
for x in data: 
    date = datetime.datetime.strptime['x', '%d/%m/%Y'] 
    dates.append(date) 

pl.plot(data[:, x], data[:, y], '-r', label= 'High Stocking Rate') 
pl.plot(data[:, x], data[:, y2], '-g', label= 'Medium Stocking Rate') 
pl.plot(data[:, x], data[:, y3], '-b', label= 'Low Stocking Rate') 
pl.title('Amount of Livestock Grazing per hectare', fontsize=18) 
pl.ylabel('Livestock per ha') 
pl.xlabel('Date') 
pl.grid(True) 
pl.ylim(0,100) 

pl.show() 
+0

Вы экспериментировали с 'datetime' в интерактивной сессии Python? – hpaulj

ответ

2

Проблема заключается в том, как вы импортировали datetime.

Модуль datetime содержит класс, также называемый datetime. На данный момент, вы просто импортировать класс как datetime, из которого вы можете использовать метод strptime, например, так:

from datetime import datetime 
... 
x = [foo['Date'] for foo in data] 
... 
dates=[] 
for i in x: 
    date = datetime.strptime(i,'%d/%m/%Y') 
    dates.append(date) 

В качестве альтернативы, вы можете импортировать полный datetime модуль, а затем получить доступ к datetime класс, используя datetime.datetime :

import datetime 
... 
x = [foo['Date'] for foo in data] 
... 
dates=[] 
for i in x: 
    date = datetime.datetime.strptime(i,'%d/%m/%Y') 
    dates.append(date) 
+0

Brilliant thanks @tom Я, похоже, столкнулся с другой проблемой с форматом данных времени с этим сообщением: 'ValueError: данные времени' x 'не соответствуют формату'% d /% m /% Y '' .... есть идеи?? – Jacktt

+0

вы повторно используете переменную 'x'. Сначала вы определяете его как даты из 'data', но затем повторно используете его в цикле (' for x in data'). попробуйте использовать другое имя переменной в цикле (см. мой отредактированный ответ выше, я использовал 'i'). Вам также не нужны кавычки вокруг 'i' при вызове' strptime'. – tom

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