การแยกวิเคราะห์ CSV

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

Liam Brannigan

Data Scientist & Polars Contributor

ตัวอย่างไฟล์ CSV จากฝ่ายการเงิน

Chicago Finance Department
Generated: 2026-02-01
WARD;TYPE;STATUS;REQUEST_COST
11;Pothole in Street Complaint;Completed;125
42;Street Light Out;Open;88
27;Alley Light Out;Completed;61
  • 🛑 แถวแรกไม่ใช่ส่วนหัว
  • 🛑 คอลัมน์คั่นด้วยเครื่องหมายเซมิโคลอน
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การข้ามแถว

vendor_requests = pl.read_csv(
    "ward_service_requests.csv",
    skip_rows=2,

)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การข้ามแถวส่วนหัวเพิ่มเติม

vendor_requests = pl.read_csv(
    "ward_service_requests.csv",
    skip_rows=2,
    separator=";",
)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ตรวจสอบไฟล์ที่แยกวิเคราะห์แล้ว

vendor_requests.head(3)
shape: (3, 4)
| WARD | TYPE                        | STATUS    | REQUEST_COST |
| ---  | ---                         | ---       | ---          |
| i64  | str                         | str       | i64          |
|------|-----------------------------|-----------|--------------|
| 11   | Pothole in Street Complaint | Completed | 125          |
| 42   | Street Light Out            | Open      | 88           |
| 27   | Alley Light Out             | Completed | 61           |
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ปัญหาการอนุมาน schema

WARD;TYPE;STATUS;REQUEST_COST
11;Pothole in Street Complaint;Completed;125
42;Street Light Out;Open;88
27;Alley Light Out;Completed;61


$$

  • 100 แถวแรก → อนุมาน schema
  • มีแต่จำนวนเต็ม → คอลัมน์เป็น Int64
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การอนุมาน schema

WARD;TYPE;STATUS;REQUEST_COST
11;Pothole in Street Complaint;Completed;125
42;Street Light Out;Open;88
27;Alley Light Out;Completed;61
...
3;Rodent Baiting Service Request;Completed;61.5

$$

  • 100 แถวแรก → อนุมาน schema
  • มีแต่จำนวนเต็ม → คอลัมน์เป็น Int64
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การอนุมาน schema

vendor_requests = pl.read_csv(
    "ward_service_requests.csv",
    separator=";",
    skip_rows=2,
    infer_schema_length=200,
)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การอนุมาน schema

vendor_requests.schema
Schema({'WARD': Int64, 'TYPE': String, 'STATUS': String, 'REQUEST_COST': Float64})
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การระบุ schema

vendor_requests = pl.read_csv(
    "ward_service_requests.csv",
    separator=";",
    skip_rows=2,
    schema={
        "WARD": pl.Int64,
        "TYPE": pl.String,
        "STATUS": pl.String,
        "REQUEST_COST": pl.Float64,
    },
)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การแทนที่ schema ที่อนุมานไว้

vendor_requests = pl.read_csv(
    "ward_service_requests.csv",
    separator=";",
    skip_rows=2,
    schema_overrides={"REQUEST_COST": pl.Float64},
)
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ตรวจสอบการแทนที่ schema

vendor_requests.schema
Schema({'WARD': Int64, 'TYPE': String, 'STATUS': String, 'REQUEST_COST': Float64})
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

ปัญหาข้อมูลที่ผิดพลาด

WARD;TYPE;STATUS;REQUEST_COST
11;Pothole in Street Complaint;Completed;125.0
unknown;Street Light Out;Open;88.5
27;Alley Light Out;Completed;61.0
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การละเว้นข้อผิดพลาดในการแยกวิเคราะห์

pl.read_csv(
    "ward_service_requests.csv",
    separator=";",
    skip_rows=2,
    infer_schema_length=200,
    ignore_errors=True,
)

$$

  • ค่าที่ผิดพลาด → null
  • ซ่อน ข้อผิดพลาดอื่นไว้
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

การกำหนดค่า null

pl.read_csv(
    "ward_service_requests.csv",
    separator=";",
    skip_rows=2,
    infer_schema_length=200,
    null_values={"WARD": "unknown"},
)

$$

  • คงไว้ซึ่ง dtype ที่ตั้งใจไว้
  • ปลอดภัยกว่า ignore_errors
การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

มาฝึกกันเถอะ!

การปรับขนาดและเพิ่มประสิทธิภาพ Data Pipeline ด้วย Polars

Preparing Video For Download...