Python Pandas: Làm cách nào để chỉ đọc n hàng đầu tiên của tệp CSV?


94

Tôi có một bộ dữ liệu rất lớn và tôi không đủ khả năng để đọc toàn bộ bộ dữ liệu trong đó. Vì vậy, tôi đang nghĩ đến việc chỉ đọc một phần của nó để đào tạo nhưng tôi không biết phải làm thế nào. Bất kỳ suy nghĩ sẽ được đánh giá cao.

Câu trả lời:


163

Nếu bạn chỉ muốn đọc 999.999 hàng đầu tiên (không phải tiêu đề):

read_csv(..., nrows=999999)

Nếu bạn chỉ muốn đọc hàng 1.000.000 ... 1.999.999

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

nrows : int, mặc định Không có Số hàng của tệp cần đọc. Hữu ích để đọc các phần của tệp lớn *

bỏ qua : giống danh sách hoặc số nguyên Số hàng cần bỏ qua (được lập chỉ mục 0) hoặc số hàng cần bỏ qua (int) ở đầu tệp

và đối với các tệp lớn, có thể bạn cũng sẽ muốn sử dụng chunksize:

chunksize : int, mặc định Không có Đối tượng TextFileReader Trả về để lặp lại

tài liệu pandas.io.parsers.read_csv


Không sao đâu, chúng hơi bị ẩn. Tài liệu có thể làm với những ví dụ này. chunksizelà một chút khó khăn, bạn phải đối phó với các khối có kích thước không đồng đều. Cũng nên phân bổ trước các mảng / khung dữ liệu của bạn với kích thước cố định mà bạn biết mình sẽ cần, không thực hiện nối / nối động bất cứ khi nào bạn có thể tránh được.
smci

... và ngoài ra, nó không giống như giao diện nstart=,nend=.... Bạn phải làm số học trênskiprows = nend - nrows
smci

1
Tôi đoán điều đó vừa được tiếp quản từ SQL LIMIT nstart, skiprows:: /
FooBar

... và đừng quên lỗi từng phần nếu bạn cũng sử dụngheader=n/list
smci
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.