How do I read CSV data into a record array in NumPy?
Как мне считывать CSV-данные в массив записей в NumPy?
Есть ли прямой способ импортировать содержимое CSV-файла в массив записей, точно так же, как R read.table(), read.delim() и read.csv() импортируют данные в R dataframes?
Или я должен использовать csv.reader(), а затем применить numpy.core.records.fromrecords()?
Переведено автоматически
Ответ 1
Используйте numpy.genfromtxt(), установив delimiter значение kwarg в запятую:
from numpy import genfromtxt my_data = genfromtxt('my_file.csv', delimiter=',')
DataFrame это двумерная помеченная структура данных со столбцами потенциально разных типов. Вы можете представить ее как электронную таблицу или таблицу SQL...
Я бы также рекомендовал numpy.genfromtxt. Однако, поскольку в вопросе запрашивается массив записей, в отличие от обычного массива, dtype=None параметр необходимо добавить к genfromtxt вызову:
import numpy as np np.genfromtxt('myfile.csv', delimiter=',')
import csv import numpy as np withopen(dest_file,'r') as dest_f: data_iter = csv.reader(dest_f, delimiter = delimiter, quotechar = '"') data = [data for data in data_iter] data_array = np.asarray(data, dtype = <whatever options>)
обработал 4,6 миллиона строк с примерно 70 столбцами и обнаружил, что путь NumPy занял 2 минуты 16 секунд, а метод понимания csv-списка занял 13 секунд.
Я бы порекомендовал метод понимания csv-списка, поскольку он, скорее всего, полагается на предварительно скомпилированные библиотеки, а не на интерпретатор в такой степени, как NumPy. Я подозреваю, что метод pandas будет иметь аналогичные накладные расходы на интерпретатор.
Ответ 4
Вы также можете попробовать recfromcsv() который может угадывать типы данных и возвращать правильно отформатированный массив записей.