Python Pandas: วิธีอ่านเฉพาะไฟล์ CSV n แถวแรกใน?


93

ฉันมีชุดข้อมูลขนาดใหญ่มากและฉันไม่สามารถอ่านชุดข้อมูลทั้งหมดได้ฉันจึงคิดว่าจะอ่านข้อมูลเพียงชุดเดียวเพื่อฝึก แต่ฉันไม่รู้ว่าจะทำอย่างไร ความคิดใด ๆ จะได้รับการชื่นชม

คำตอบ:


161

หากคุณต้องการอ่านเฉพาะ 999,999 แถวแรก (ไม่ใช่ส่วนหัว):

read_csv(..., nrows=999999)

หากคุณต้องการอ่านเฉพาะแถว 1,000,000 ... 1,999,999

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

nrows : int, default ไม่มีจำนวนแถวของไฟล์ที่จะอ่าน มีประโยชน์สำหรับการอ่านไฟล์ขนาดใหญ่ *

Skiprows : รายการเหมือนหรือเลขจำนวนเต็มแถวที่จะข้าม (0 ดัชนี) หรือจำนวนแถวที่จะข้าม (int) ที่จุดเริ่มต้นของไฟล์

และสำหรับไฟล์ขนาดใหญ่คุณอาจต้องการใช้ chunksize:

chunksize : int ค่าเริ่มต้นไม่มีส่งคืนวัตถุ TextFileReader สำหรับการทำซ้ำ

เอกสาร pandas.io.parsers.read_csv


ไม่เป็นไรซ่อนไว้เล็กน้อย เอกสารสามารถใช้กับตัวอย่างเหล่านี้ได้ chunksizeเป็นความเจ็บปวดเล็กน้อยคุณต้องจัดการกับชิ้นส่วนที่มีขนาดไม่เท่ากัน นอกจากนี้ยังจัดสรรอาร์เรย์ / ดาต้าเฟรมของคุณล่วงหน้าด้วยขนาดคงที่ที่คุณรู้ว่าคุณต้องการอย่าทำการต่อ / ผนวกแบบไดนามิกเมื่อใดก็ตามที่คุณสามารถหลีกเลี่ยงได้
smci

... nstart=,nend=...และยังจะไม่เหมือนอินเตอร์เฟซเป็น คุณต้องทำเลขคณิตในskiprows = nend - nrows
smci

1
ฉันเดาว่าเพิ่งมาจาก SQL LIMIT nstart, skiprows: /
FooBar

... และอย่าลืมข้อผิดพลาด off-by-n หากคุณใช้header=n/list
smci
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.