เมื่อได้ไฟล์ CSV จากระบบอื่นหรือจากทีมงาน ขั้นตอนแรกในงานข้อมูลคือโหลดเข้า Python แล้วแปลงเป็น pandas DataFrame เพื่อกรอง รวมค่า หรือเตรียมก่อนส่งต่อ บทความนี้สรุปการใช้ pandas.read_csv ใน Python 3.12 กับตัวเลือกที่ใช้บ่อยจริงๆ ไม่ใช่แค่พิมพ์ชื่อไฟล์แล้วจบ

ถ้าต้องการย้อนไปดูการส่งข้อมูลออกจาก DataFrame หลังประมวลผลแล้ว อ่านคู่กับ วิธีนำออกข้อมูล Pandas DataFrame เป็น CSV และ Excel ได้เลย สองบทความนี้ครอบคลุมทั้งนำเข้าและนำออกในลำดับงานจริง

ภาพหน้าจอแสดงกราฟและตารางข้อมูลสำหรับงานวิเคราะห์

ขั้นตอนพื้นฐานที่ควรตั้งก่อนอ่านไฟล์

  1. ระบุตัวแบ่งคอลัมน์ ด้วย sep ค่าเริ่มต้นคือจุลภาค แต่ไฟล์จากบางประเทศใช้ ; หรือ \t ถ้าแยกคอลัมน์ผิด ตัวเลขจะกลายเป็นข้อความยาวๆ ในคอลัมน์เดียว
  2. กำหนด encoding ด้วย encoding='utf-8' หรือ encoding='tis-620' เมื่อเจอไฟล์เก่าจาก Windows ในไทย ถ้าไม่ตรง ตัวอักษรไทยจะกลายเป็นสัญลักษณ์แปลกๆ
  3. แถวหัวตาราง ใช้ header=0 เมื่อแถวแรกเป็นชื่อคอลัมน์ หรือ header=None แล้วตั้งชื่อเองด้วย names=[...] เมื่อไฟล์ไม่มีหัว

ตัวเลือกที่ช่วยให้ dtype และวันที่ถูกต้อง

การปล่อยให้ pandas เดา dtype เองมักใช้ได้ แต่คอลัมน์รหัสไปรษณีย์หรือเลขที่ควรเป็นข้อความอาจถูกอ่านเป็นตัวเลขและเสียศูนย์หน้า ใช้ dtype หรืออ่านเป็น string แล้วแปลงทีหลังตามกติกาธุรกิจ

คอลัมน์วันที่ควรใช้ parse_dates=['วันที่'] หรือส่งรายชื่อหลายคอลัมน์เมื่อวันที่แยกเป็นหลายช่อง จะได้ค่าเป็น datetime ตรงกับงานต่อเนื่อง เช่น resample หรือ merge กับตารางอื่น

import pandas as pd
df = pd.read_csv(
    "รายงาน.csv",
    sep=",",
    encoding="utf-8",
    header=0,
    parse_dates=["order_date"],
    dtype={"zip": "string"},
)

อาการที่มักเจอเมื่ออ่าน CSV ผิดรูปแบบ

ถ้าเห็นคอลัมน์เดียวยาวผิดปกติ ให้ตรวจ sep ก่อน ถ้าตัวเลขกลายเป็น scientific notation โดยไม่ตั้งใจ ให้ตรวจ dtype และการมีอักขระพิเศษในตัวเลข หากอ่านแล้วแถวนับไม่ตรงกับที่คาด อาจมีบรรทัดข้อความที่มีตัวขึ้นบรรทัดใหม่ภายในเครื่องหมายคำพูด ต้องเปิดไฟล์ด้วยตัวแก้ไขข้อความเพื่อดูรูปแบบจริงก่อนตั้งค่าเพิ่ม

เชื่อมกับหน้าแรกและบทความที่เกี่ยวข้อง

กลับไปหน้าแรก Dev Journeys เพื่อดูบทความอื่นในหมวด Python และ Data Science หรือเปิด บทความส่งออก DataFrame เป็น CSV และ Excel เมื่อต้องการเขียนไฟล์หลังจัดรูปแบบข้อมูลแล้ว

แนวทางนี้เหมาะกับงานนำเข้าจาก CSV ที่ควบคุมรูปแบบได้ หากแหล่งข้อมูลอยู่บนเว็บหรือต้องดึงหลายแผ่น Excel การออกแบบ pipeline จะต่างออกไป แต่จุดเริ่มของทุกอย่างยังคือการอ่านไฟล์ให้ตรงตั้งแต่ครั้งแรก