Python Pandas: Como ler apenas as primeiras n linhas de arquivos CSV?

96

Tenho um conjunto de dados muito grande e não posso me dar ao luxo de ler todo o conjunto de dados. Portanto, estou pensando em ler apenas um pedaço dele para treinar, mas não tenho ideia de como fazê-lo. Qualquer pensamento será apreciado.

bensw
fonte

Respostas:

172

Se você deseja ler apenas as primeiras 999.999 linhas (sem cabeçalho):

read_csv(..., nrows=999999)

Se você deseja apenas ler as linhas 1.000.000 ... 1.999.999

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

nrows : int, padrão Nenhum Número de linhas do arquivo para ler. Útil para ler pedaços de arquivos grandes *

skiprows : semelhante a uma lista ou números inteiros de linha a pular (indexado em 0) ou número de linhas a pular (int) no início do arquivo

e para arquivos grandes, você provavelmente também desejará usar chunksize:

chunksize : int, default None Return TextFileReader objeto para iteração

documentação do pandas.io.parsers.read_csv

smci
fonte
Tudo bem, eles estão ligeiramente escondidos. O doc poderia fazer com esses exemplos. chunksizeé um pouco chato, você tem que lidar com pedaços de tamanhos desiguais. Também pré-aloque seus arrays / dataframes com o tamanho fixo que você sabe que vai precisar, não faça concat / append dinamicamente sempre que puder evitá-lo.
smci
... e também, não é como a interface é nstart=,nend=.... Você tem que fazer a aritmética emskiprows = nend - nrows
smci
1
Acho que acabou de ser retirado do SQL LIMIT nstart, skiprows: /
FooBar
... e não se esqueça dos erros off-by-n se você também usarheader=n/list
smci