Python Pandas: как читать только первые n строк файлов CSV?

93

У меня очень большой набор данных, и я не могу позволить себе прочитать весь набор данных. Итак, я думаю прочитать только один его фрагмент для обучения, но я не знаю, как это сделать. Любая мысль будет оценена по достоинству.

Bensw
источник

Ответы:

160

Если вы хотите прочитать только первые 999999 строк (без заголовка):

read_csv(..., nrows=999999)

Если вы хотите читать только строки 1,000,000 ... 1,999,999

read_csv(..., skiprows=1000000, nrows=999999)

nrows : int, по умолчанию Нет Число строк файла для чтения. Полезно для чтения фрагментов больших файлов *

skiprows : список или целое число. Номера строк, которые нужно пропустить (с индексом 0), или количество строк, которые нужно пропустить (int) в начале файла

а для больших файлов вы, вероятно, также захотите использовать chunksize:

chunksize : int, по умолчанию Нет Возврат объекта TextFileReader для итерации

документация pandas.io.parsers.read_csv

smci
источник
Ничего страшного, они немного скрыты. Документ может справиться с этими примерами. chunksizeнемного неудобно, вам приходится иметь дело с кусками неравномерного размера. Также предварительно выделяйте свои массивы / фреймы данных фиксированного размера, который, как вы знаете, вам понадобится, не выполняйте динамическое объединение / добавление, когда вы можете этого избежать.
smci
... а также интерфейс не такой nstart=,nend=.... Вы должны сделать арифметику поskiprows = nend - nrows
smci
1
Думаю, это только что LIMIT nstart, skiprows
переняли
... и не забывайте о off-by-n ошибках, если вы также используетеheader=n/list
smci