从csv绘制日期。在pylab中的文件

时间:2016-04-05 13:12:32

标签: csv datetime numpy matplotlib genfromtxt

我试图从csv中绘制日期。文件列与其他三列数字相对应。我是python的新手,到目前为止设法将列导入python并试图读取它们有一个数组,但我似乎无法用日期时间模块附加它们并绘制沿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'

但我确定我在多个地方出错......

数据本身的格式为四列,打印时如下所示:(&#39; 04/03 / 2013&#39;,7.0,12.0,17.0)(&#39; 11/03 / 2013&#39 ;,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()

1 个答案:

答案 0 :(得分: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)