Python Pandas: Bagaimana cara membaca hanya n baris pertama file CSV?

93

Saya memiliki kumpulan data yang sangat besar dan saya tidak mampu untuk membaca seluruh kumpulan data. Jadi, saya berpikir untuk membaca hanya satu bagian saja untuk melatihnya tetapi saya tidak tahu bagaimana melakukannya. Pikiran apa pun akan dihargai.

bensw
sumber

Jawaban:

160

Jika Anda hanya ingin membaca 999.999 baris (non-header) pertama:

read_csv(..., nrows=999999)

Jika Anda hanya ingin membaca baris 1.000.000 ... 1.999.999

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

nrows : int, default Tidak ada Jumlah baris file yang akan dibaca. Berguna untuk membaca potongan file besar *

skiprows : seperti daftar atau integer Nomor baris yang dilewati (0-diindeks) atau jumlah baris untuk dilewati (int) di awal file

dan untuk file besar, Anda mungkin juga ingin menggunakan chunksize:

chunksize : int, default None Kembalikan objek TextFileReader untuk iterasi

dokumentasi pandas.io.parsers.read_csv

smci
sumber
Tidak apa-apa, mereka sedikit tersembunyi. Dokter dapat melakukan dengan contoh-contoh ini. chunksizeagak merepotkan, Anda harus berurusan dengan potongan berukuran tidak rata. Juga lakukan pra-alokasi array / dataframe Anda dengan ukuran tetap yang Anda tahu akan Anda perlukan, jangan secara dinamis melakukan concat / append setiap kali Anda dapat menghindarinya.
smci
... dan juga, ini tidak seperti antarmuka nstart=,nend=.... Anda harus melakukan perhitungan padaskiprows = nend - nrows
smci
1
Saya kira itu baru saja diambil alih dari SQL LIMIT nstart, skiprows:: /
FooBar
... dan jangan lupakan kesalahan off-by-n jika Anda juga menggunakanheader=n/list
smci