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.

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.