У меня есть данные, хранящиеся в текстовых файлах с разделителями-запятыми.Один из столбцов представляет дату и время.
Мне нужно загрузить каждый столбец в отдельные массивы (и декодировать дату в объект datetime Python).
Какой самый быстрый способ сделать это(с точки зрения времени выполнения)?
Примечание.файлы содержат несколько сотен МБ данных и в настоящее время загружаются в течение нескольких минут.
например, mydata.txt
15,3,0,2003-01-01 00:00:00,12.2
15,4.5,0,2003-01-01 00:00:00,13.7
15,6,0,2003-01-01 00:00:00,18.4
15,7.5,0,2003-01-01 00:00:00,17.9
15,9,0,2003-01-01 00:00:00,17.7
15,10.5,0,2003-01-01 00:00:00,16.3
15,12,0,2003-01-01 00:00:00,17.2
Вот мой текущий код (работает, но медленно):
import csv
import datetime
import time
import numpy
a=[]
b=[]
c=[]
d=[]
timestmp=[]
myfile = open('mydata.txt',"r")
# Read in the data
csv_reader = csv.reader(myfile)
for row in csv_reader:
a.append(row[0])
b.append(row[1])
c.append(row[2])
timestmp.append(row[3])
d.append(row[4])
a = numpy.array(a)
b = numpy.array(b)
c = numpy.array(c)
d = numpy.array(d)
# Convert Time string list into list of Python datetime objects
times = []
time_format = "%Y-%m-%d %H:%M:%S"
for i in xrange(len(timestmp)):
times.append(datetime.datetime.fromtimestamp(time.mktime(time.strptime(timestmp[i], time_format))))
Есть ли более эффективный способ сделать это?
Любая помощь очень ценится - спасибо!
(редактировать: В конце концов,Оказалось, что узким местом является преобразование даты и времени, а не чтение файла, как я изначально предполагал.)