Дополнительно
Как считать данные CSV в массив записей в NumPy?
Интересно, существует ли прямой способ импортировать содержимое CSV-файла в массив записей, подобно тому, как семейства R'read.table(),
read.delim()и
read.csv()` импортируют данные в R'data frame?
Или лучше всего использовать csv.reader(), а затем применить что-то вроде numpy.core.records.fromrecords()
?
376
11
Для этого можно использовать метод Numpy'
genfromtxt()
, установив в качестве ключаdelimiter
запятую.Более подробную информацию о функции можно найти в соответствующей документации.
Я бы рекомендовал использовать функцию [
read_csv
][1] из библиотекиpandas
:Это дает pandas [DataFrame][2] - позволяя [множество полезных функций манипулирования данными, которые не доступны напрямую с массивами записей numpy][3].
Я бы также рекомендовал
genfromtxt
. Однако, поскольку в вопросе запрашивается [массив записей][4], а не обычный массив, в вызовgenfromtxt
необходимо добавить параметрdtype=None
:Дан входной файл
myfile.csv
:дает массив:
и
дает массив записей:
Вы также можете попробовать
recfromcsv()
, которая может угадывать типы данных и возвращать правильно отформатированный массив записей.Я приурочил
против
на 4,6 млн. строк около 70 столбцов и обнаружили, что путь включает в себя 2 мин 16 сек и CSV-список способ постижения заняла 13 секунд.
Я бы рекомендовал CSV-список способ понимания, как и это, скорее всего, опирается на предварительно скомпилированные библиотеки, а не переводчик так сильно, как numpy. Я подозреваю, что способ панд будет иметь аналогичную переводчик накладных.
Как я попробовал оба пути, используя NumPy и панды, используя панд имеет много преимуществ:
Это мой тестовый код:
test_numpy_csv.py
test_pandas.py
Данные файла:
С NumPy и панды в вариантах:
Вы можете использовать этот код для отправки данных в формате CSV файла в массив:
Я попытался это:
Используя
и NumPy.loadtxt
Довольно простой способ. Но он требует, чтобы все элементы поплавка (int и т. д.)
Это самый простой способ:
импорт CSV с открытыми('вопросами и ответами.КШМ', строки='') как csvfile, был: = список данных(CSV.читатель(csvfile, был))
Теперь каждая запись данных-это запись, представленная в виде массива. Так что у вас есть 2Д массив. Он спас меня так много времени.
Я хотел бы предложить, используя таблицы (
pip3 установить таблицы
). Вы можете сохранить ваши.файл CSV
до.Н5 с помощью панды (
pip3 установки панды`),Вы можете легко и меньше времени даже для больших объемов данных, загрузка данных в и NumPy массива.
Эта работа как шарм... `` импорт CSV с открытыми("По данных.CSV-файл" и, 'Р') как F: = список данных(CSV.читатель(Ф, разделитель=и"; и"))
импорт включает в себя как НП данные = НП.массив(данных, dtype=НП.поплавок) ``