เกริ่นนำ
ปกติเวลาเราทำงานกับ tabular data แล้วเนี่ยเราก็จะมักเก็บไฟล์เป็นแบบ csv กันใช่มั้ยครับ เพราะมันสะดวกดี แต่จริง ๆ แล้วเจ้า csv มันก็มีข้อเสียของมันคือค่อนข้างช้าครับ วันนี้ผมเลยทำการทดสอบสั้น ๆ เพื่อเทียบประสิทธิภาพของ csv เทียบกับไฟล์ฟอร์แมตยอดฮิตอีก 3 ตัวนั่นก็คือ parquet, pickle และ feather ครับ เราลองมาดูกันว่าตัวไหนจะมีประสิทธิภาพดีที่สุด
เริ่มจากโหลด library ต่าง ๆ
ลองโหลด data ของเรามา ขนาดประมาณ 120 Mb ครับ
เวลาที่ใช้ในการอ่านเขียนไฟล์
ต่อไปจับเวลาเขียนไฟล์แต่ละประเภท แล้วเก็บผลไว้ใน list แต่เนื่องจากการอ่านเขียนแต่ละครั้งจะได้ผลต่างกันเล็กน้อย ผมจึงลองทำทั้งหมด 10 ครั้งแล้วหาค่าเลี่ยครับ
ต่อไปลองจับเวลาอ่านไฟล์แต่ละประเภทครับ
เอาผลที่ได้มาทำเป็น dataframe แล้ว plot กราฟดู
เราจะเห็นได้ว่า csv ช้าที่สุดทั้งอ่านและเขียนครับ (ช้าแบบบ้าบอมาก) ส่วน feather นั้นเร็วที่สุดในบรรดา 4 ตัวครับผม panquet กับ pickle นั้นเร็วกว่า csv แต่ช้ากว่า feather ครับ
ขนาดของไฟล์ที่เก็บบนเครื่อง
csv file size: 119 MB
feather file size: 188 MB
parquet file size: 19 MB
pickle file size: 157 MB
เราจะเห็นได้ว่า ถึงแม้ feather จะมี performance ดีที่สุด แต่ว่าขนาดของไฟล์ก็จะมีขนาดใหญ่ที่สุดครับ ถ้าอยากประหยัดพื้นที่เก็บไฟล์ด้วย แนะนำให้ใช้ parquet ดีกว่าครับ