2016-04-05 8 views
0

私はcsvから日付をプロットしようとしています。ファイル列を3つの他の列の列と比較します。私はPythonには新しく、これまでPythonに列をインポートするために管理していましたが、それらを読み込もうとしましたが、配列を持っていますが、datetimeモジュールを追加することができず、データ。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' 

しかし、私は複数の場所で間違ったつもりだと確信している...

自体は4でフォーマットされたデータ('04/03/2013 '、7.0,12.0,17.0)('11/03/2013'、23.0,15.0,23.0)のようになります。

は、ここでの問題は、あなたがdatetimeを輸入してきた方法である完全なコード

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

インタラクティブなPythonセッションで 'datetime'を試しましたか? – hpaulj

答えて

2

です。

datetimeモジュールには、datetimeとも呼ばれるクラスが含まれています。現時点では、あなたはちょうどあなたがstrptimeメソッドを使用することができ、そこからdatetime、としてクラスをインポートしているので、同じよう:また

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

私はこのメッセージで時刻データの形式に関する別の問題に遭遇したようです: 'ValueError:時刻データ' x 'が'%d /%m /%Y '形式に一致しません....何か案は?? – Jacktt

+0

変数 'x'を再利用しています。最初に 'data'の日付として定義しますが、それをループで再利用します(' for data in x')。ループ内で別の変数名を使ってみてください(上の私の編集した答えを見てください、私は 'i'を使いました)。また、 'strptime'の呼び出しで' i'の前後に引用符は必要ありません。 – tom

関連する問題