ทำไมจึงควรทำความสะอาดข้อมูลด้วย pandas แทนการทำด้วยมือ?

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

ลองนึกถึงกลุ่มศูนย์จำหน่ายต้นไม้และอุปกรณ์จัดสวนสมมติชื่อ เฟิร์นฮิลล์ การ์เดนส์ ซึ่งมีสี่สาขา โทมัช นักวิเคราะห์การเงินได้รับไฟล์ CSV คำสั่งซื้อออนไลน์รายเดือน ในตัวอย่างด้านล่าง คำสั่งซื้อเดียวกันปรากฏสองครั้ง ชื่อสาขาพิมพ์ต่างกันหลายแบบ ยอดเงินมีสัญลักษณ์สกุลเงินและเครื่องหมายจุลภาค วันที่มีทั้งรูปแบบวันขึ้นก่อนและปีขึ้นก่อน และค่าที่ขาดหายปรากฏเป็นช่องว่าง 'ไม่มีข้อมูล' และ '-' การแก้ด้วยมือใช้เวลาหนึ่งวัน และยอดรวมก็ไม่เคยตรงกับรายงานของผู้ให้บริการรับชำระเงินเสียที.

order_idsiteorder_dateamountpostcode
10231ลีดส์03/11/2026£1,240.00LS6
10231ลีดส์03/11/2026£1,240.00LS6
10232ลีดส์2026-11-0486.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) ↗