Python Pandas: Wie lese ich nur die ersten n Zeilen von CSV-Dateien ein?

93

Ich habe einen sehr großen Datensatz und kann es mir nicht leisten, den gesamten Datensatz einzulesen. Ich denke also daran, nur einen Teil davon zu lesen, um zu trainieren, aber ich habe keine Ahnung, wie ich das machen soll. Jeder Gedanke wird geschätzt.

bensw
quelle

Antworten:

160

Wenn Sie nur die ersten 999.999 Zeilen (ohne Header) lesen möchten:

read_csv(..., nrows=999999)

Wenn Sie nur Zeilen lesen möchten 1.000.000 ... 1.999.999

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

nrows : int, default None Anzahl der zu lesenden Dateizeilen. Nützlich zum Lesen großer Dateien *

skiprows : Listenähnliche oder ganzzahlige Zeilennummern, die übersprungen werden sollen (0-indiziert) oder Anzahl der zu überspringenden Zeilen (int) am Anfang der Datei

und für große Dateien möchten Sie wahrscheinlich auch Chunksize verwenden:

chunksize : int, default None Gibt das TextFileReader-Objekt zur Iteration zurück

pandas.io.parsers.read_csv Dokumentation

smci
quelle
Das ist in Ordnung, sie sind leicht versteckt. Das Dokument könnte mit diesen Beispielen umgehen. chunksizeist ein bisschen schmerzhaft, man muss mit ungleich großen Stücken umgehen. Ordnen Sie auch Ihre Arrays / Datenrahmen mit der festen Größe vor, von der Sie wissen, dass Sie sie benötigen. Führen Sie Concat / Append nicht dynamisch durch, wenn Sie dies vermeiden können.
smci
... und es ist auch nicht so, wie die Schnittstelle ist nstart=,nend=.... Sie müssen die Arithmetik amskiprows = nend - nrows
smci
1
Ich denke, das ist gerade von SQL übernommen LIMIT nstart, skiprows
::
... und vergessen Sie nicht off-by-n-Fehler, wenn Sie auch verwendenheader=n/list
smci