2016-04-05 7 views
0

Ich versuche, Daten von einem CSV zu plotten. Dateispalte gegen drei andere Spalten von Zahlen. Ich bin neu in Python und habe es bisher geschafft, die Spalten in Python zu importieren und habe versucht, sie zu lesen, hat ein Array, aber ich kann nicht scheinen, sie mit dem Datetime-Modul anhängen und die Daten entlang der X-Achse zusammen mit meinen Daten.Zeichnen eines Datums von einem CSV. Datei in pylab

Bitte kann jemand helfen?

in der Minute ich die Fehlermeldung erhalte:

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' 

Aber ich bin sicher, dass ich werde falsch in mehr als einem Ort ...

Die Daten selbst in vier formatiert ist Spalten und wenn gedruckt, sieht so aus: ('04/03/2013 ', 7.0, 12.0, 17,0) ('11/03/2013', 23.0, 15.0, 23.0).

Dies ist der komplette Code

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

Haben Sie in einer interaktiven Python-Sitzung mit 'datetime' experimentiert? – hpaulj

Antwort

2

Das Problem in der Art und Weise ist, dass Sie datetime importiert haben.

Das Modul datetime enthält eine Klasse, auch datetime genannt. Im Moment sind Sie importieren nur die Klasse als datetime, von dem Sie die strptime Methode verwenden können, etwa so:

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) 

Alternativ können Sie die kompletten datetime Modul importieren und dann Zugriff auf die datetime-Klasse 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 danke @tom Ich habe anscheinend ein anderes Problem mit dem Format der Zeitdaten mit dieser Nachricht bekommen: 'ValueError: Zeitdaten' x 'stimmt nicht mit Format'% d /% m /% Y '' .... irgendwelche Ideen?? – Jacktt

+0

Sie verwenden die Variable 'x' erneut. Sie definieren es zuerst als Daten von 'data', verwenden es dann aber in der Schleife (' for x in data'). Versuchen Sie es mit einem anderen Variablennamen in der Schleife (siehe meine bearbeitete Antwort oben, ich habe 'i' verwendet). Sie brauchen auch nicht die Anführungszeichen um 'i' im Aufruf von' strptime'. – tom