У меня есть CSV-файл данных, разделенных табуляцией, с заголовками и данными разных типов, которые я хотел бы преобразовать в словарь векторов. В конце концов я хотел бы преобразовать словарь в массивы и хранить их в каком-то двоичном формате для быстрого поиска различными сценариями. Это большой файл с примерно 700 тыс. Записей и 16 столбцами. Ниже приведен пример:
"answer_option" "value" "fcast_date" "expertise"
"a" 0.8 "2013-07-08" 3
"b" 0.2 "2013-07-08" 3
Я начал реализовывать это с помощью класса DictReader, о котором я только что узнал.
import csv
with open( "filename.tab", 'r') as records:
reader = csv.DictReader( records, dialect='excel-tab' )
row = list( reader )
n = len( row )
d = {}
keys = list( row[0] )
for key in keys :
a = []
for i in range(n):
a.append( row[i][key] )
d [key] = a
что дает результат
{'answer_option': ['a', 'b'],
'value': ['0.8', '0.2'],
'fcast_date': ['2013-07-08', '2013-07-08'],
'expertise': ['3', '3']}
Помимо небольшого неудобства необходимости очищать от числовых значений символы кавычек, которые их заключают, я подумал, что, возможно, есть что-то готовое. Мне также интересно, есть ли что-нибудь, что извлекает непосредственно из файла в пустые векторы, так как мне не нужно обязательно преобразовывать мои данные в словарях.
Я посмотрел на SciPy.org, и поиск CSV также ссылается на HDF5 и genfromtxt , но я еще не углублялся в эти предложения. В идеале я хотел бы иметь возможность хранить данные в формате быстрой загрузки, чтобы было просто загрузить из других сценариев только одну команду, где все векторы доступны так же, как это возможно в Matlab. / октава. Предложения приветствуются
РЕДАКТИРОВАТЬ: данные табуляции разделены строками, заключенными в кавычки.