2016-03-28 10 views
0

助けてください!datetime.strptimeを使用して.csvカラムから日付を取得する

このコードでは多くの問題があります。ここでの作業は、関連する日付に対していくつかの情報(High、Low、Medium)をプロットすることです。

データは.csvファイルで見出しが「日付」、「高」、「中」、「低」のいずれかになります。日付はdd/mm/yyyy形式です。これまでのところ、私は列やデータ型などを指定するためにgenfromtxtを使用しました

.. はしかし、私はPythonが列を読んでいる方法に問題があると思う - 私は「あまりにも多くの指標」のいずれか得続ける:

import pylab as py 
import numpy as np 
import datetime as dt 
import csv 

data = np.genfromtxt('F:\\Python\\All.csv', usecols=(0,1,2,3), names=True, skip_header=0, dtype=[('Date', 'S10')]),('High','f8'),('Medium','f8'),('Low','f8')], delimiter = ',') 

print data 

x = data[:,Date] 
y1 = data[:,1] 
y2 = data[:,2] 
y3 = data[:,3] 

Date2 = [] 

for x in data: 
date_format = dt.datetime.strptime((str(x)), '%d/%m/%Y') 
Date2.append.date_format 
:ここ
Traceback (most recent call last): 
File "F:\Python\A1.py", line 14, in <module> 
x = data[:,'Date'] 
ValueError: invalid literal for long() with base 10: 'Date' 

は完全なコードです:; [ '日付]私は、x =データを使用している場合
Traceback (most recent call last): 
File "F:\Python\A1.py", line 14, in <module> 
x = data[:,0] 
IndexError: too many indices 

は、OR、私はこれを取得します

ありがとうございました!

+0

CSVの最初の数行のスニペットを投稿できますか? 「データ」を印刷すると、何が表示されますか?それはあなたが期待するものと一線を画していますか?私はこれらの問題があるたびに、通常はpythonのファイルを私が期待したものとは異なる方法で解析することになります。 –

答えて

0

data = np.genfromtxt(...)は、3つの要素を持つタプルの1次元配列を生成します。たとえば、データは次のようになります。

array([(b'02/03/2015', 3.0, 2.0, 1.0), (b'03/04/2015', 4.0, 3.0, 1.0), 
     (b'04/05/2015', 10.0, 9.0, 7.0), (b'05/06/2015', 12.0, 4.0, 3.0), 
     (b'06/07/2015', 2.0, 1.0, 0.0)], 
dtype=[('Date', 'S10'), ('High', '<f8'), ('Medium', '<f8'), ('Low', '<f8')]) 

データを2次元配列として扱いましたが、実際には1次元配列です。このようなことをすることができます

x = [foo[0] for foo in data] 
y1 = [foo[1] for foo in data] 
y2 = [foo[2] for foo in data] 
y3 = [foo[3] for foo in data] 
関連する問題