Python Pandas: Comment lire uniquement les n premières lignes de fichiers CSV?

93

J'ai un très grand ensemble de données et je ne peux pas me permettre de lire l'intégralité de l'ensemble de données. Donc, je pense en lire un seul morceau pour m'entraîner, mais je ne sais pas comment le faire. Toute pensée sera appréciée.

bensw
la source

Réponses:

160

Si vous souhaitez lire uniquement les 999 999 premières lignes (sans en-tête):

read_csv(..., nrows=999999)

Si vous voulez seulement lire les lignes 1 000 000 ... 1 999 999

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

nrows : int, default None Nombre de lignes du fichier à lire. Utile pour lire des morceaux de gros fichiers *

skiprows : comme une liste ou un entier Numéros de ligne à sauter (indexés à 0) ou nombre de lignes à ignorer (entier) au début du fichier

et pour les fichiers volumineux, vous voudrez probablement également utiliser chunksize:

chunksize : int, default None Renvoie l'objet TextFileReader pour l'itération

documentation pandas.io.parsers.read_csv

smci
la source
C'est bon, ils sont légèrement cachés. Le doc pourrait faire avec ces exemples. chunksizeest un peu pénible, vous devez faire face à des morceaux de taille inégale. Préallouez également vos tableaux / dataframes avec la taille fixe dont vous savez avoir besoin, ne faites pas dynamiquement concat / append chaque fois que vous pouvez l'éviter.
smci
... et aussi, ce n'est pas comme l'interface nstart=,nend=.... Vous devez faire l'arithmétique surskiprows = nend - nrows
smci
1
Je suppose que c'est juste pris le relais de SQL LIMIT nstart, skiprows:: /
FooBar
... et n'oubliez pas les erreurs par header=n/list
étapes