ทำไมจึงควรทำความสะอาดข้อมูลด้วย pandas แทนการทำด้วยมือ?
การทำความสะอาดข้อมูลใน pandas คุ้มค่า เพราะทุกขั้นตอนถูกบันทึกไว้และนำไปรันซ้ำกับข้อมูลที่ส่งออกในเดือนถัดไปได้ในไม่กี่วินาที ขณะที่การแก้ไขด้วยมือในตารางคำนวณนั้นช้า ลืมได้ง่าย และตรวจสอบย้อนหลังไม่ได้
ลองนึกถึงกลุ่มศูนย์จำหน่ายต้นไม้และอุปกรณ์จัดสวนสมมติชื่อ เฟิร์นฮิลล์ การ์เดนส์ ซึ่งมีสี่สาขา โทมัช นักวิเคราะห์การเงินได้รับไฟล์ CSV คำสั่งซื้อออนไลน์รายเดือน ในตัวอย่างด้านล่าง คำสั่งซื้อเดียวกันปรากฏสองครั้ง ชื่อสาขาพิมพ์ต่างกันหลายแบบ ยอดเงินมีสัญลักษณ์สกุลเงินและเครื่องหมายจุลภาค วันที่มีทั้งรูปแบบวันขึ้นก่อนและปีขึ้นก่อน และค่าที่ขาดหายปรากฏเป็นช่องว่าง 'ไม่มีข้อมูล' และ '-' การแก้ด้วยมือใช้เวลาหนึ่งวัน และยอดรวมก็ไม่เคยตรงกับรายงานของผู้ให้บริการรับชำระเงินเสียที.
| order_id | site | order_date | amount | postcode |
|---|---|---|---|---|
| 10231 | ลีดส์ | 03/11/2026 | £1,240.00 | LS6 |
| 10231 | ลีดส์ | 03/11/2026 | £1,240.00 | LS6 |
| 10232 | ลีดส์ | 2026-11-04 | 86.50 | ไม่เกี่ยวข้อง |
| 10233 | ยอร์ก | 05/11/2026 | - | วายโอ1 |
| 10234 | แฮร์โรเกต | 142 |
จะทำความสะอาดข้อมูลด้วย pandas แบบทีละขั้นได้อย่างไร?
ทำความสะอาดข้อมูลใน pandas โดยเริ่มจากโหลดข้อมูลพร้อมระบุสัญลักษณ์ที่ใช้แทนค่าที่หายไป ตรวจสอบข้อมูล ปรับข้อความให้เป็นมาตรฐาน แปลงตัวเลขและวันที่ ลบข้อมูลซ้ำ ตัดสินใจว่าจะจัดการช่องว่างที่เหลืออย่างไร แล้วตรวจผลลัพธ์เทียบกับยอดรวมที่เชื่อถือได้ การทำตามลำดับนี้ช่วยไม่ให้การแก้ไขขั้นหนึ่งไปลบล้างผลของอีกขั้นหนึ่ง
1. โหลดข้อมูลโดยระบุสัญลักษณ์ที่ใช้แทนค่าที่ขาดหายไป
ฟังก์ชัน read_csv ของ pandas อ่านไฟล์เข้าสู่ DataFrame อาร์กิวเมนต์ na_values ช่วยให้คุณระบุข้อความเพิ่มเติม เช่น 'ไม่มีข้อมูล' และ '-' เพื่อให้ถือว่าเป็นข้อมูลที่ขาดหาย นอกเหนือจากค่าเริ่มต้นที่ pandas รู้จักอยู่แล้ว เช่น ช่องว่างที่ไม่ได้กรอกข้อมูล การระบุไว้ตรงนี้ช่วยให้ไม่ต้องตามหาในภายหลัง
2. ตรวจสอบก่อนเปลี่ยนแปลงสิ่งใด
ดูแถวแรก ๆ ด้วย head ดูชนิดข้อมูลของคอลัมน์และจำนวนค่าที่ไม่ขาดหายด้วย info และดูจำนวนค่าที่ขาดหายในแต่ละคอลัมน์โดยใช้ isna ร่วมกับ sum จดสิ่งที่พบไว้: ที่ Fernhill ข้อมูล amount ถูกเก็บเป็นข้อความ และ order_date มีรูปแบบวันที่ปะปนกัน.
3. ปรับข้อความให้เป็นมาตรฐานเดียวกัน
ใช้เมธอดจัดการข้อความกับคอลัมน์: str.strip ลบช่องว่างที่ต้นและท้ายข้อความ ส่วน str.lower หรือ str.title ทำให้รูปแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่สอดคล้องกัน เพื่อให้ ' Leeds', 'leeds ' และ 'LEEDS' กลายเป็นสถานที่เดียวกัน จากนั้นแสดงค่าที่ไม่ซ้ำด้วย unique เพื่อตรวจหาการสะกดแบบอื่นที่ยังเหลืออยู่
4. แปลงตัวเลข
ลบสัญลักษณ์สกุลเงินและเครื่องหมายจุลภาคคั่นหลักพันด้วย str.replace แล้วแปลงด้วย to_numeric การตั้งค่าอาร์กิวเมนต์ errors เป็น coerce จะเปลี่ยนสิ่งที่แปลงไม่ได้ให้เป็นค่าว่างแทนการหยุดทำงาน คุณจึงนับและตรวจสอบแถวเหล่านั้นได้ แทนที่จะสูญเสียข้อมูลไปโดยไม่รู้ตัว
5. แปลงรูปแบบวันที่
to_datetime แปลงข้อความให้เป็นวันที่ที่ถูกต้อง หากมีหลายรูปแบบ ให้ระบุรูปแบบอย่างชัดเจนเมื่อทำได้ หรือตั้งค่า dayfirst สำหรับวันที่แบบสหราชอาณาจักร และตั้งค่า errors เป็น coerce เพื่อให้วันที่ที่แปลงไม่ได้กลายเป็น NaT ซึ่งเป็นค่าที่ pandas ใช้แทนวันที่ที่ขาดหายไป โปรดทราบว่า dayfirst เป็นเพียงรูปแบบที่ระบบจะเลือกใช้ก่อน ไม่ใช่กฎตายตัว จึงควรตรวจสอบผลลัพธ์
6. ลบรายการซ้ำ
drop_duplicates ลบแถวที่ซ้ำกัน โดยค่าเริ่มต้น แถวจะถือว่าซ้ำก็ต่อเมื่อข้อมูลตรงกันทุกคอลัมน์ อาร์กิวเมนต์ subset ช่วยให้คุณตรวจสอบแถวซ้ำจากคอลัมน์ที่เลือก เช่น order_id ส่วน keep กำหนดว่าจะเก็บแถวแรกหรือแถวสุดท้ายไว้
7. ตัดสินใจว่าจะจัดการส่วนที่ยังขาดอย่างไร
dropna ลบแถวที่มีค่าขาดหาย แต่โดยค่าเริ่มต้น จะลบทั้งแถวหากมีคอลัมน์ใดคอลัมน์หนึ่งขาดค่า ใช้อาร์กิวเมนต์ subset เพื่อลบเฉพาะแถวที่ขาดค่าที่จำเป็นจริง ๆ เช่น amount หรือใช้ fillna เพื่อเติมค่าที่กำหนดลงในช่องว่าง จากนั้นใช้ astype เพื่อกำหนดชนิดข้อมูลสุดท้ายของแต่ละคอลัมน์ เช่น กำหนดชนิดข้อมูลแบบหมวดหมู่ให้กับ site
การทำความสะอาดข้อมูลหนึ่งรอบแบบที่ยังไม่ดีและแบบที่ปรับปรุงแล้วมีลักษณะอย่างไร?
วิธีที่ไม่รอบคอบโหลดไฟล์ด้วย read_csv เรียก dropna โดยไม่ใส่อาร์กิวเมนต์ แล้วเรียก drop_duplicates โดยไม่ใส่อาร์กิวเมนต์ เนื่องจากช่องรหัสไปรษณีย์มักว่าง dropna จึงลบคำสั่งซื้อที่ถูกต้องออกไปเป็นจำนวนมาก และเนื่องจาก ' Leeds' กับ 'leeds ' ยังแตกต่างกัน ข้อมูลซ้ำบางส่วนจึงยังคงอยู่ รายได้ที่คำนวณได้ต่ำกว่าความจริงมาก และไม่มีใครรู้ว่าแถวใดถูกลบไป.
รอบการประมวลผลที่ปรับปรุงแล้วกำหนดให้ 'N/A' และ '-' เป็นค่าที่ขาดหายไปตั้งแต่ตอนโหลด ตัดช่องว่างหัวท้ายของ site และปรับให้ขึ้นต้นแต่ละคำด้วยตัวพิมพ์ใหญ่ แปลง amount ด้วย to_numeric หลังลบ '£' และจุลภาค แปลง order_date ด้วย dayfirst และ coerce ลบข้อมูลซ้ำโดยพิจารณาจาก order_id และเก็บรายการแรกไว้ และลบเฉพาะแถวที่ไม่มี amount จากนั้นแสดงจำนวนแถวที่แต่ละขั้นตอนลบออก และเปรียบเทียบรายได้รวมกับรายงานของผู้ให้บริการรับชำระเงิน ตอนนี้โทมาชอธิบายความแตกต่างทุกรายการได้แล้ว
จะตรวจสอบได้อย่างไรว่าการทำความสะอาดข้อมูลได้ผล?
ตรวจสอบการทำความสะอาดข้อมูลโดยนับจำนวนแถวก่อนและหลังแต่ละขั้นตอน เปรียบเทียบยอดรวมสำคัญกับแหล่งข้อมูลอิสระ และทบทวนแถวที่ค่าถูกแปลงเป็นค่าสูญหาย เรียกใช้ info อีกครั้งเพื่อยืนยันชนิดข้อมูลของคอลัมน์ และแสดงรายการค่าที่ไม่ซ้ำกันของหมวดหมู่ต่าง ๆ เช่น สถานที่ หากขั้นตอนใดลบแถวมากกว่าที่คาดไว้ ให้ตรวจดูแถวเหล่านั้นก่อนดำเนินการต่อ.
ผู้ช่วย AI ช่วยทำความสะอาดข้อมูลด้วย pandas ได้อย่างไร?
ผู้ช่วย AI สามารถร่างขั้นตอนทำความสะอาดข้อมูลได้ หากคุณอธิบายแต่ละคอลัมน์ ปัญหาของคอลัมน์นั้น และกฎที่ต้องการ ทั้งยังช่วยอธิบายฟังก์ชันที่ไม่คุ้นเคยได้ อธิบายโครงสร้างโดยใช้ค่าตัวอย่างที่สมมติขึ้น แทนการวางข้อมูลลูกค้าจริง เช่น ชื่อ ที่อยู่ หรือรหัสไปรษณีย์แบบเต็ม ขอให้รายงานจำนวนแถวหลังจบแต่ละขั้นตอน และตรวจสอบอาร์กิวเมนต์ทุกตัวที่ใช้ในฟังก์ชันกับเอกสารทางการของ pandas เพราะบางครั้งผู้ช่วยแนะนำตัวเลือกที่ไม่มีอยู่จริงหรือเปลี่ยนไปในแต่ละเวอร์ชัน
ข้อผิดพลาดที่พบบ่อยในการทำความสะอาดข้อมูลด้วย pandas มีอะไรบ้าง?
ข้อผิดพลาดที่พบบ่อยที่สุดคือการเรียก dropna โดยไม่ระบุอาร์กิวเมนต์ ทำให้สูญเสียแถวที่มีข้อมูลครบถ้วนดี ยกเว้นคอลัมน์ที่ไม่จำเป็นต้องกรอก ข้ออื่น ๆ ได้แก่ การลบข้อมูลซ้ำก่อนปรับข้อความให้เป็นมาตรฐานเดียวกัน การแปลงวันที่โดยไม่ตรวจลำดับวันและเดือน การเขียนทับไฟล์ต้นฉบับ และการไม่เคยเทียบยอดรวมหลังทำความสะอาดข้อมูลกับตัวเลขที่เชื่อถือได้
บทเรียนนี้อยู่ในส่วนใดของ Tosheo.ai?
นี่คือบทเรียนเขียนโค้ดในหมวดวิทยาศาสตร์ข้อมูลและการวิเคราะห์ของหลักสูตรวิทยาศาสตร์ข้อมูล ทุกวิชาของ Tosheo.ai เริ่มจากแนวคิดและแบบฝึกที่ไม่ต้องเขียนโค้ด ส่วนบทเรียนเขียนโค้ดเป็นเส้นทางเสริมสำหรับเรียนเชิงลึก หลังสมัคร ฉบับลงมือทำเต็มรูปแบบของบทเรียนนี้จะให้คุณเขียนและรันแต่ละขั้นตอนการทำความสะอาดข้อมูลด้วย Python และ pandas โดยให้คะแนนตามเกณฑ์ที่ระบุชัดเจน หากยังไม่เคยใช้ Python ให้เริ่มจากหลักสูตร Python หลักสูตรนี้พัฒนาทักษะใช้งานจริง ไม่ใช่หลักสูตรฝึกเข้มข้นและไม่รับประกันการได้งาน.
แหล่งข้อมูลและขอบเขต
เอกสาร pandas: read_csv (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
คู่มือผู้ใช้ pandas: การจัดการข้อมูลที่ขาดหาย (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: DataFrame.dropna (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: DataFrame.drop_duplicates (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: DataFrame.astype (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: to_numeric (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: to_datetime (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗
เอกสาร pandas: Series.str.strip (ตรวจสอบเมื่อ 19 ตุลาคม 2026) ↗