我正在尝试从csv中绘制日期。file列与其他三列数字进行比较。我是python的新手,到目前为止,我已经成功地将列导入到python中,并尝试读取它们。我有一个数组,但我似乎无法将它们与日期时间模块一起附加,也无法将日期与数据一起沿x轴绘制。
有人能帮忙吗?
此刻,我不断收到错误消息:
Traceback (most recent call last):
File "H:AppliedGISPythonwoops.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()
问题出在导入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)