Python Pandas: jak czytać tylko pierwsze n wierszy plików CSV?

93

Mam bardzo duży zestaw danych i nie mogę sobie pozwolić na wczytanie całego zestawu danych. Myślę więc o przeczytaniu tylko jednego fragmentu do treningu, ale nie mam pojęcia, jak to zrobić. Każda myśl zostanie doceniona.

bensw
źródło

Odpowiedzi:

160

Jeśli chcesz odczytać tylko pierwsze 999 999 (bez nagłówka) wierszy:

read_csv(..., nrows=999999)

Jeśli chcesz czytać tylko wiersze 1000000 ... 1,999,999

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

nrows : int, default Brak Liczba wierszy pliku do odczytania. Przydatne do czytania fragmentów dużych plików *

skiprows : list-like lub integer Numery wierszy do pominięcia (indeksowane 0) lub liczba wierszy do pominięcia (int) na początku pliku

aw przypadku dużych plików prawdopodobnie będziesz też chciał użyć chunksize:

chunksize : int, default Brak Zwraca obiekt TextFileReader do iteracji

Dokumentacja pandas.io.parsers.read_csv

smci
źródło
W porządku, są lekko ukryte. Doktor mógłby zrobić z tymi przykładami. chunksizeto trochę uciążliwe, musisz radzić sobie z nierównomiernymi kawałkami. Również wstępnie przydziel swoje tablice / ramki danych o stałym rozmiarze, o którym wiesz, że będziesz potrzebować, nie wykonuj dynamicznie łączenia / dołączania, gdy możesz tego uniknąć.
smci
... a także, to nie jest interfejs nstart=,nend=.... Musisz zrobić arytmetykę dniaskiprows = nend - nrows
smci
1
Wydaje mi się, że to właśnie przejęte z SQL LIMIT nstart, skiprows:: /
FooBar
... i nie zapomnij o błędach off-by-n, jeśli używasz równieżheader=n/list
smci