2013-12-09 3 views
0

В настоящее время я пытаюсь импортировать текстовые данные с разделителями-запятыми в массив, используя библиотеку numpy в Python. Я использую следующий код:Как вы разрешаете текстовые классификаторы с помощью numpy genfromtxt

data = np.genfromtxt(fname, delimiter=',') 

Я получаю следующее сообщение об ошибке:

Line #2 (got 12 columns instead of 11)

для каждой строки после заголовка.

Причина в том, что один из столбцов содержит запятую, но пытается справиться с этим с использованием текстовых классификаторов (") вокруг данных для этого столбца. Если я использовал библиотеку csv Python, это обрабатывается по умолчанию, например:

reader = csvreader(open(fname, 'rb')) 

Я знаю, что я мог бы импортировать данные с помощью csv библиотеки, а затем преобразовать его в массив, но я подумал, что это можно сделать с одной из функций Numpy, что преобразования текстовых данных массив, такой как genfromtxt. Я проверил справку по genfromtxt, но ни один из приведенных здесь аргументов не описывает то, что я искал, если только я не упустил что-то.

В случае помогает здесь образец несколько строк из файла:

survived,pclass,name,sex,age,sibsp,parch,ticket,fare,cabin,embarked 
0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C 
1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S 

Это имя столбца, что я предполагаю, что вызывает проблему.

ответ

1

Многочисленные массивы не подходят для категориальных данных, например, у вас здесь. Вы можете быть лучше использовать pandas:

import pandas 
data = pandas.read_csv(fname) 
1

Один из способов обойти это, чтобы добавить еще одно поле имени, так что у вас есть тринадцать имен полей с отдельным имя и фамилия колонки:

survived,pclass,surname,forname,sex,age,sibsp,parch,ticket,fare,cabin,embarked 

Если вы затем импортировать так:

data = np.genfromtxt(fname, delimiter=',',names=True,dtype=None) 

Он должен работать:

data['surname'] 
array(['"Braund', '"Cumings', '"Heikkinen'], 
     dtype='|S10') 

Обратите внимание, что вы также можете указать отметки " в исходном файле.

Смежные вопросы