从csv打印日期。在pylab中归档

从csv打印日期。在pylab中归档,csv,datetime,numpy,matplotlib,genfromtxt,Csv,Datetime,Numpy,Matplotlib,Genfromtxt,我正试图从csv中绘制日期。文件列与其他三列数字相对。我是python新手,到目前为止,我已经成功地将列导入python中,并尝试通过数组读取它们,但我似乎无法将它们附加到datetime模块中,并沿着x轴绘制日期和数据 请问有人能帮忙吗 在我不断收到错误消息的那一刻: Traceback (most recent call last): File "H:\AppliedGIS\Python\woops.py", line 24, in <module> date = da

我正试图从csv中绘制日期。文件列与其他三列数字相对。我是python新手,到目前为止,我已经成功地将列导入python中,并尝试通过数组读取它们,但我似乎无法将它们附加到datetime模块中,并沿着x轴绘制日期和数据

请问有人能帮忙吗

在我不断收到错误消息的那一刻:

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'
回溯(最近一次呼叫最后一次):
文件“H:\AppliedGIS\Python\woops.py”,第24行,在
date=datetime.datetime.strtime['x','%d/%m/%Y']
AttributeError:类型对象“datetime.datetime”没有属性“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()
导入csv
将numpy作为np导入
将pylab作为pl导入
导入日期时间
从日期时间导入日期时间

data=np.genfromtxt('H:/AppliedGIS/Python/AssignmentData/growthdribution/full.csv',names=True,usecols=(0,1,2,3),delimiter=',',,dtype=[('Date','S10'),('HIGH','p>问题在于导入日期时间的方式

datetime
模块包含一个类,也称为
datetime
。目前,您只是将该类导入为
datetime
,从中可以使用
strtime
方法,如下所示:

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)

问题在于导入日期时间的方式

datetime
模块包含一个类,也称为
datetime
。目前,您只是将该类导入为
datetime
,从中可以使用
strtime
方法,如下所示:

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)

非常感谢@tom我似乎在时间数据的格式方面遇到了另一个问题:“ValueError:时间数据“x”与格式“%d/%m/%Y”不匹配……有什么想法吗?您正在重用变量
x
。您首先将其定义为
数据的日期,然后在循环中重用它(
用于数据中的x
)。尝试在循环中使用不同的变量名(请参见上面我编辑的答案,我使用了
I
)。在调用
strtime
时,您也不需要在
i
周围加引号。非常感谢@tom我似乎遇到了另一个与此消息的时间数据格式有关的问题:“ValueError:时间数据“x”与格式“%d/%m/%Y”不匹配……有什么想法吗?您正在重用变量
x
。您首先将其定义为日期从
数据
,但随后在循环中重复使用它(
表示数据中的x
)。尝试在循环中使用不同的变量名(请参阅我上面编辑的答案,我使用了
I
)。您也不需要在调用
strtime
时引用
i
。您是否在交互式Python会话中尝试过
datetime
?您是否在交互式Python会话中尝试过
datetime