กำไร:
- ความสามารถในการแยกแยะสาเหตุของค่าที่หายไป (สุ่ม เป็นระบบ มีความหมาย) และเลือกกลยุทธ์ที่เหมาะสมและคำนวณค่าเติมจากการฝึกอบรมเพียงอย่างเดียว
- ความสามารถในการตรวจสอบค่าผิดปกติก่อนที่จะลบ และแยกแยะระหว่างข้อผิดพลาดของข้อมูลและเหตุการณ์ที่เกิดขึ้นได้ยาก
- ความสามารถในการป้องกันการสูญเสียโดยการติดตามผลกระทบของแต่ละขั้นตอนต่อจำนวนบรรทัด/ช่องว่าง ในขณะเดียวกันก็ทำให้ประเภทและรูปแบบไม่สอดคล้องกันตามมาตรฐาน
ประมาณ 60-80 เปอร์เซ็นต์ของเวลาของนักวิทยาศาสตร์ข้อมูลคือการทำความสะอาด ในอุตสาหกรรม สิ่งนี้เรียกแบบกึ่งล้อเล่นว่า "การทะเลาะวิวาทข้อมูล" (การทะเลาะวิวาทข้อมูลหรือการล้างข้อมูล) เนื่องจากข้อมูลในโลกแห่งความเป็นจริงแทบไม่เคยพร้อมสำหรับการวิเคราะห์เลย: วันที่อยู่ในรูปแบบผสม ตัวเลขถูกจัดเก็บเป็นข้อความ บางเซลล์ว่างเปล่า ลูกค้าปรากฏสามครั้งในตารางเดียวกันโดยมีการสะกดคำที่แตกต่างกันสองแบบ ในหน่วยนี้ เราจะครอบคลุมแง่มุมพื้นฐานสามประการของการล้างข้อมูล: ค่าที่หายไป ค่าผิดปกติ และการแปลงประเภท/รูปแบบ ปัญญาประดิษฐ์เป็นผู้ช่วยที่รวดเร็วเป็นพิเศษในงานนี้ แต่คุณเป็นผู้ตัดสินใจว่าจะทำความสะอาดอะไรและอย่างไร เนื่องจากตัวเลือกการทำความสะอาดแต่ละรายการจะเปลี่ยนแปลงการวิเคราะห์
กฎทองของการทำความสะอาด: ทุกการเปลี่ยนแปลงคือการตัดสินใจ
การลบเซลล์ เติมค่าที่ขาดหายไปด้วยค่าเฉลี่ย ตัดค่าผิดปกติออก สิ่งเหล่านี้ไม่ใช่การดำเนินการที่ "เป็นกลาง" แต่ละรายการจะเปลี่ยนแปลงข้อมูลและส่งผลต่อผลลัพธ์ ดังนั้นกฎทองของการล้างข้อมูล: เขียนทุกการเปลี่ยนแปลงลงในโค้ด จดเหตุผล และอย่าเขียนทับข้อมูลต้นฉบับ AI ให้โค้ดการล้างข้อมูลอย่างรวดเร็วแก่คุณ แต่เป็นความรับผิดชอบของคุณที่จะต้องเข้าใจว่าโค้ดนั้นทำอะไร อย่าเรียกใช้โดยไม่เห็นจำนวนบรรทัดที่หายไปเมื่อคุณพูดว่า "ลบบรรทัดว่าง"
ข้อควรระวัง: ห้ามแก้ไขข้อมูลดิบต้นฉบับ เขียนเวอร์ชันที่ล้างแล้วลงในไฟล์/ตารางแยกต่างหาก ด้วยวิธีนี้ หากคุณพบข้อผิดพลาด คุณสามารถกลับไปที่จุดแรกและรักษาความสามารถในการทำซ้ำได้
ค่าที่หายไป: เหตุใดจึงว่างเปล่า จะต้องทำอย่างไร
ค่าที่หายไป (โดยปกติจะปรากฏเป็น NaN — "ไม่ใช่ตัวเลข" ในภาษานุ่น) คือเมื่อเซลล์ว่างเปล่า แต่สาเหตุของช่องว่างเป็นตัวกำหนดวิธีแก้ปัญหา มีสามสถานการณ์ทั่วไป หายไปแบบสุ่ม: เซ็นเซอร์ไม่ทำงานชั่วขณะหนึ่ง มันอาจจะสมเหตุสมผลที่จะกรอก ขาดหายไปอย่างเป็นระบบ: ช่องแบบฟอร์มจะถูกถามสำหรับลูกค้าบางรายเท่านั้น ช่องว่างที่นี่คือข้อมูลจริงๆ ขาดหายไปอย่างมาก: หาก "วันที่ส่งคืน" เว้นว่างไว้ แสดงว่าลูกค้าไม่ได้คืน ช่องว่างนี้หมายถึง 0 หรือ "ไม่มี" แต่ยังไม่ได้เติม
กลยุทธ์หลัก:
กลยุทธ์
เมื่อไหร่จึงจะเหมาะสม?
ความเสี่ยง
ลบแถว
อัตราที่หายไปต่ำมาก (<5%) และสุ่ม
การสูญเสียข้อมูลและการเป็นตัวแทน
ลบคอลัมน์
คอลัมน์ส่วนใหญ่ว่างเปล่า (>60%)
การสูญเสียข้อมูล
การเติมเฉลี่ย/มัธยฐาน
ตัวเลขหายไปแบบสุ่ม
จะช่วยลดความแปรปรวนและบิดเบือนการกระจายตัว
หมวดหมู่ "ไม่ทราบ"
ขาดหมวดหมู่และเป็นระบบ
สร้างหมวดหมู่เพิ่มเติม
การทำนายด้วยแบบจำลอง
คอลัมน์ที่ซับซ้อนและล้ำค่า
ความเสี่ยงการรั่วไหล ความซับซ้อน
จุดวิกฤต: ควรคำนวณค่าการใส่ข้อมูลจากข้อมูลการฝึกเท่านั้น และควรใช้ค่าเดียวกันกับข้อมูลการทดสอบ หากคุณรวมค่าเฉลี่ยของข้อมูลการทดสอบ คุณจะสร้างการรั่วไหล (หน่วยที่ 10) ค่ามัธยฐาน (ค่าตรงกลางของข้อมูลลำดับ) มักนิยมใช้มากกว่าค่าเฉลี่ย เนื่องจากมีค่าผิดปกติมากกว่าค่าเฉลี่ย
ค่าผิดปกติ: ข้อผิดพลาดหรือจริง?
ค่าผิดปกติอาจเป็นหนึ่งในสองสิ่งต่อไปนี้: ข้อผิดพลาดของข้อมูล (999 ในคอลัมน์อายุ) หรือเหตุการณ์จริงแต่เกิดขึ้นไม่บ่อยนัก (คำสั่งซื้อมูลค่า 2 ล้านดอลลาร์ของลูกค้า) การสร้างความสับสนให้กับทั้งสองถือเป็นหายนะ: ลบค่าผิดปกติที่แท้จริงแล้วคุณจะทิ้งข้อมูลสำคัญไป หากคุณปล่อยวางข้อผิดพลาด ค่าเฉลี่ยของคุณจะต้องทนทุกข์ทรมาน ดังนั้นจึงจำเป็นต้องตรวจสอบค่าผิดปกติก่อน ไม่ใช่ลบออกโดยอัตโนมัติ
วิธีการตรวจจับทั่วไป: วิธี IQR (ช่วงควอไทล์ โดยค่าที่มากกว่า 1.5 เท่าของความแตกต่างระหว่างควินไทล์ของข้อมูล 25% ถึง 75% ถือเป็นค่าผิดปกติ) และ z-score (จำนวนค่าเบี่ยงเบนมาตรฐานที่อยู่ห่างจากค่าเฉลี่ยของค่าที่เป็น โดยปกติจะเป็นค่าผิดปกติหากมากกว่า 3) AI เขียนโค้ดสำหรับการคำนวณเหล่านี้ในไม่กี่วินาที แต่ก่อนที่คุณจะพูดว่า "ลบ" ให้ตรวจสอบค่าเหล่านั้นก่อน
การแปลงประเภทและรูปแบบ: แหล่งข้อผิดพลาดที่ไม่มีการโต้ตอบ
สิ่งที่น่าปวดหัวที่สุดประการหนึ่งคือความสับสนเกี่ยวกับประเภทข้อมูล หากคอลัมน์ "จำนวนเงิน" ถูกจัดเก็บเป็นข้อความ คุณจะไม่สามารถเพิ่มได้ โปรแกรมอ่านตัวเลขที่จัดรูปแบบเป็นภาษาตุรกีไม่ถูกต้อง เช่น "1,250.50" แทนที่จะเป็น "หนึ่งพันสองร้อยห้าสิบ" วันที่ ("01/03/2024" วัน-เดือน หรือ เดือน-วัน?) หมวดหมู่ ("ชาย"/"ชาย"/"M" เหมือนกันหรือไม่) และหน่วย (TL หรือ kuruş?) จะให้ผลลัพธ์ที่ไม่ถูกต้องโดยไม่แจ้งให้ทราบ ส่วนสำคัญของการทำความสะอาดคือการดึงความไม่สอดคล้องกันเหล่านี้มาสู่มาตรฐาน: วันที่เป็นรูปแบบเดียว หมวดหมู่เป็นการสะกดคำเดียว ตัวเลขไว้ในหน่วยเดียว
มินิเคสสามอัน
กรณีที่ 1 — กับดักโดยเฉลี่ย ทีมกรอกค่าที่หายไป 320 ค่าในคอลัมน์รายได้โดยมีค่าเฉลี่ย ($48,500) แต่ข้อบกพร่องเป็นระบบ: นี่คือกลุ่มผู้มีรายได้น้อยที่ไม่เคยประกาศรายได้ การกรอกโดยเฉลี่ยทำให้กลุ่มนี้ร่ำรวยเทียม และแบบจำลองเครดิตไม่ถูกต้อง บทเรียน: ถาม “ทำไมจึงว่างเปล่า” ก่อนที่จะกรอกข้อมูล
กรณีที่ 2 — ค่าผิดปกติที่ไม่ควรลบ นักวิเคราะห์การค้าปลีกได้ลบคำสั่งซื้อขนาดใหญ่ 4 คำสั่งซื้อ (1.8 ล้าน TL ต่อคำสั่งซื้อ) ในข้อมูลการขาย โดยคิดว่าเป็น "ข้อผิดพลาด" อย่างไรก็ตาม สิ่งเหล่านี้เป็นคำสั่งซื้อขององค์กรจริงและคิดเป็น 22% ของมูลค่าการซื้อขายทั้งหมด โมเดลการคาดการณ์หลังการลบทิ้งความต้องการของสถาบันไปโดยสิ้นเชิง บทเรียน: ตรวจสอบค่าผิดปกติก่อนที่จะลบออก
กรณีที่ 3 — ภัยพิบัติในรูปแบบวันที่ ใน CSV วันที่จะผสมลงในทั้ง "2024-03-01" และ "01.03.2024" เมื่อโค้ดที่เขียนโดย YZ ถูกแยกวิเคราะห์ตามรูปแบบแรก 6,400 บรรทัดกลายเป็น NaT เป็น "วันที่ไม่ถูกต้อง" และถูกแยกออกจากการวิเคราะห์โดยไม่แจ้งให้ทราบ นักวิเคราะห์สังเกตเห็นสิ่งนี้เมื่อจำนวนบรรทัดลดลงเท่านั้น บทเรียน: ตรวจสอบจำนวนบรรทัดและช่องว่างหลังการแปลงทุกครั้ง
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) แผนที่ค่าที่หายไป:
ฉันมีแพนด้า df เขียนโค้ดที่สร้างตารางแสดงจำนวนและเปอร์เซ็นต์ของการขาดหายไป (NaN) สำหรับแต่ละคอลัมน์ จากนั้น ให้แยกรายการคอลัมน์ที่มีอัตราขาดหายไปเกิน 40% และคอลัมน์ที่มีอัตราขาดหายไปต่ำกว่า 5% แยกกัน เพียงสร้างโค้ดการวินิจฉัยนี้ ไม่ใช่กลยุทธ์ที่คุณแนะนำ ฉันจะตัดสินใจ
2) การตรวจสอบค่าผิดปกติ (ไม่ใช่การลบ):
เขียนโค้ดที่ตรวจจับ (ไม่ลบ!) ค่าผิดปกติสำหรับคอลัมน์ "จำนวน" ของฉันโดยใช้วิธี IQR วางแถวที่อยู่ห่างไกลไว้ใน df แยกกัน เพื่อให้ฉันตรวจสอบได้ด้วยตนเอง พิมพ์จำนวนค่าผิดปกติและส่วนแบ่งทั้งหมดด้วย
3) การกำหนดมาตรฐานประเภท/รูปแบบ:
เขียนโค้ดที่สร้างมาตรฐานให้กับคอลัมน์ต่อไปนี้:- "date": สามารถเป็นรูปแบบผสมได้ ("2024-03-01" และ "01.03.2024"); แปลงทั้งหมดเป็น datetime นับอันที่แปลไม่ได้แล้วรายงาน (ทิ้งไปเงียบ ๆ ) - "เพศ": "ชาย"/"ชาย"/"M" -> "M", "หญิง"/"หญิง"/"F" -> "K" - "amount": ข้อความรูปแบบภาษาตุรกี ("1.250,50") -> เลขทศนิยม พิมพ์จำนวนแถวที่ได้รับผลกระทบหลังจากการแปลงแต่ละครั้ง
4) ตรวจสอบก่อน/หลังการทำความสะอาด:
เขียนโค้ดที่เปรียบเทียบ df.shape จำนวนที่หายไป และสถิติสรุป (ค่าเฉลี่ย ค่ามัธยฐาน ค่าต่ำสุด สูงสุด) ของคอลัมน์ที่เลือกก่อนและหลังขั้นตอนการล้างข้อมูล วัตถุประสงค์: เพื่อดูว่ามีการเปลี่ยนแปลงการทำความสะอาดอะไรบ้าง
พรอมต์อ่อน / พรอมต์แข็งแกร่ง
พรอมต์ที่อ่อนแอ:
ล้างข้อมูลนี้
"ชัดเจน" ไม่ชัดเจน AI ไม่รู้ว่าส่วนที่ขาดหายไปส่วนไหนควรถูกลบ ต้องเติมอะไร คอลัมน์ไหนที่ต้องดำเนินการ และอย่างไร ผลลัพธ์: การเปลี่ยนแปลงที่มองไม่เห็นและไม่สามารถย้อนกลับได้
พรอมต์อันทรงพลัง:
บทบาทของคุณ: ผู้ช่วยล้างข้อมูล คอลัมน์ df: customer_id (int), register_date (ข้อความรูปแบบผสม), Revenue_tl (ข้อความ, "1,200.00"), เมือง (ข้อความ การสะกดไม่สอดคล้องกัน) กฎ:- การเปลี่ยน df ดั้งเดิม; ทำงานกับสำเนาชื่อ df_clean.- แปลง Income_tl เป็นตัวเลข นับสิ่งที่ไม่สามารถแปลได้- เปลี่ยน record_date เป็น datetime รายงานข้อผิดพลาด- อย่าลบแถวใด ๆ โดยไม่ได้รับอนุมัติจากฉัน แสดงผู้สมัครแยกกัน หลังจากแต่ละขั้นตอน ให้พิมพ์ df_temiz.shape และหมายเลขที่หายไป
ที่นี่แหล่งที่มาได้รับการปกป้อง ทุกการเปลี่ยนแปลงจะถูกนับ การลบจะเป็นหน้าที่ของมนุษย์
ข้อผิดพลาดทั่วไป
- เติมช่องว่างโดยไม่ถามว่า "ทำไมจึงว่างเปล่า" การเติมข้อมูลที่ขาดหายไปอย่างเป็นระบบ/มีนัยสำคัญด้วยค่าเฉลี่ยจะทำให้ข้อมูลบิดเบือน
- การลบค่าผิดปกติโดยไม่ตรวจสอบ การละทิ้งเหตุการณ์จริงแต่เกิดขึ้นไม่บ่อยจะทำลายข้อมูลสำคัญ
- การคำนวณค่าช่องว่างภายในจากข้อมูลทั้งหมด รวมถึงข้อมูลการทดสอบทำให้เกิดการรั่วไหล เพียงคำนวณจากการฝึก
- ไม่ตรวจสอบจำนวนแถว/ช่องว่างหลังการแปลง แถวที่ไม่มี NaT/NaN จะถูกแยกออกจากการวิเคราะห์
- การเขียนทับข้อมูลเดิม การส่งคืนและการทำซ้ำจะหายไป
เคล็ดลับ: ดำเนินการทำความสะอาดด้วยการเปรียบเทียบ "ก่อน-หลัง" พิมพ์ df.shape จำนวนที่ขาดหายไป และสถิติสรุปของคอลัมน์ที่สำคัญหลังจากแต่ละขั้นตอน ดังนั้นคุณจะเห็นได้ทันทีว่าขั้นตอนหนึ่งทำลาย 6,000 แถวโดยไม่คาดคิด
โดยสรุป
การทำความสะอาดเป็นขั้นตอนที่ต้องใช้เวลาและต้องตัดสินใจมากที่สุดของวิทยาศาสตร์ข้อมูล การเปลี่ยนแปลงทุกครั้งจะเปลี่ยนแปลงข้อมูล ดังนั้นการเปลี่ยนแปลงแต่ละครั้งจึงเป็นการตัดสินใจอย่างมีสติ สำหรับค่าที่หายไป ให้ถามว่า "ทำไมจึงว่างเปล่า" ตรวจสอบค่าผิดปกติก่อนที่จะลบออก นำประเภทและรูปแบบให้เป็นมาตรฐาน คำนวณค่าเติมจากข้อมูลการฝึกเท่านั้น เก็บต้นฉบับ และติดตามผลกระทบของแต่ละขั้นตอนด้วยการนับ AI เป็นตัวเร่งอย่างมากในธุรกิจนี้ แต่มนุษย์เป็นผู้ตัดสินใจว่าคุณทำความสะอาดอะไรและทำไม
งานสมัคร
นำ (หรือสร้าง) ตารางเล็กๆ และจงใจแทรกปัญหาสามประการลงไป: ค่าทูเพิลที่หายไป ค่าผิดปกติ รูปแบบวันที่แบบผสม ขอรหัสการวินิจฉัยและมาตรฐานจาก AI ด้วยเทมเพลตข้างต้น เปรียบเทียบจำนวนแถวและช่องว่างก่อน/หลังแต่ละขั้นตอน พยายามจับ "การสูญเสียอย่างเงียบๆ" อย่างน้อยหนึ่งครั้ง และจดบันทึกว่าคุณสังเกตเห็นได้อย่างไร
รายการตรวจสอบ
- [ ] ฉันเก็บข้อมูลดิบต้นฉบับไว้และทำสำเนาหรือไม่
- [ ] ฉันเคยถามคำถาม "ทำไมมันว่างเปล่า" สำหรับแต่ละคอลัมน์ที่หายไป?
- [ ] ฉันได้ตรวจสอบค่าผิดปกติก่อนที่จะลบหรือไม่
- [ ] ฉันคำนวณค่าการเสริมจากข้อมูลการฝึกเท่านั้นหรือไม่
- [ ] ฉันกำลังตรวจสอบจำนวนบรรทัด/ช่องว่างหลังจากแต่ละขั้นตอนและกำจัดการสูญเสียที่เงียบเชียบหรือไม่?