Python Pandas: Як читати лише перші n рядків файлів CSV?


93

У мене дуже великий набір даних, і я не можу дозволити собі прочитати весь набір даних. Отже, я думаю прочитати лише один його фрагмент для навчання, але я не уявляю, як це зробити. Будь-яка думка буде оцінена.

Відповіді:


161

Якщо ви хочете прочитати лише перші 999 999 (без заголовків) рядків:

read_csv(..., nrows=999999)

Якщо ви хочете прочитати лише рядки 1 000 000 ... 1 999 999

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

nrows : int, за замовчуванням Немає Кількість рядків файлу для читання. Корисно для читання фрагментів великих файлів *

skiprows : подібні до списку або цілі числа Номери рядків, які потрібно пропустити (індексується 0), або кількість рядків, які потрібно пропустити (int) на початку файлу

а для великих файлів ви, мабуть, також захочете використовувати chunksize:

chunksize : int, за замовчуванням Немає Повернути об'єкт TextFileReader для ітерації

pandas.io.parsers.read_csv документація


Це нормально, вони трохи приховані. Доктор міг би зробити ці приклади. chunksizeце трохи боляче, вам доведеться мати справу з нерівномірними шматками. Також попередньо розподіліть свої масиви / кадри даних з фіксованим розміром, який вам знадобиться, не динамічно виконуйте concat / додавання, коли ви можете цього уникнути.
smci

... а також, це не так, як інтерфейс nstart=,nend=.... Вам потрібно зробити арифметикуskiprows = nend - nrows
smci

1
Думаю, це щойно взяте з SQL LIMIT nstart, skiprows:: /
FooBar

... і не забувайте про помилки, коли ви також користуєтесьheader=n/list
smci
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.