ข้อมูลสกปรก = รายงานผิด ตัดสินใจพลาด — garbage in, garbage out(ขยะเข้า ขยะออก). บทความนี้พาดู 7 ปัญหาข้อมูลสกปรกที่เจอบ่อยสุด พร้อม ตารางก่อน→หลัง + ตัวอย่างร้านไทยทุกอัน
แต่ละหัวข้อ = ปัญหาข้อมูลสกปรก 1 อย่าง. ฝั่งซ้าย:มันคืออะไร + ตัวอย่างจริงในร้านไทย + วิธีแก้ + สิ่งที่ต้องระวัง · ฝั่งขวา:ตาราง ก่อน (สกปรก/ผิด)→ หลัง (สะอาด/ถูก)ให้เห็นภาพชัด ๆ. ไม่ต้องเขียนโค้ดเป็นก็เข้าใจได้
| อาการที่เจ้าของร้านมักเจอ | น่าจะเป็น |
|---|---|
| ยอด "ลูกค้าทั้งหมด" ดูพองผิดปกติ · ส่งโปรซ้ำคนเดิมหลายครั้ง | ① ข้อมูลซ้ำ |
| ค่าเฉลี่ยต่อวันต่ำกว่าจริง · ส่งอีเมลไม่ได้เพราะไม่มีเมล | ② ข้อมูลขาด |
| เรียงวันที่แล้วสลับมั่ว · รวม 2 ไฟล์แล้วจับคู่ไม่เจอ | ③ รูปแบบไม่ตรง |
| สรุปรายจังหวัด/หมวด กระจายหลายบรรทัดทั้งที่ควรเป็นอันเดียว | ④ สะกดต่าง |
| เกิดบัญชีซ้ำทั้งที่กรอกเมลเดิม · จับซ้ำยังไงก็ไม่เจอ | ⑤ ช่องว่าง/พิมพ์ |
| ยอดเดือนพุ่งผิดปกติ · เจออายุ 999 หรือราคาติดลบ | ⑥ ค่าผิดปกติ |
| กด SUM ใน Excel ได้ 0 หรือ error · เลขต่อกันแทนที่จะบวก | ⑦ ชนิดผิด |
ลูกค้า/สินค้า คนเดียวกัน-อันเดียวกัน แต่มีหลายแถวในตาราง — เกิดจากคีย์ซ้ำ นำเข้าไฟล์ซ้ำ หรือลูกค้ากรอกฟอร์มหลายรอบ. ทำให้นับจำนวนลูกค้าเกินจริง ยอดรวมเพี้ยน
| ชื่อ | เบอร์ | ยอดซื้อ |
|---|---|---|
| สมชาย ใจดี | 081-234-5678 | ฿1,200 |
| สมชาย | 0812345678 | ฿800 |
| คุณสมชาย ใจดี | 081-234-5678 | ฿500 |
| ชื่อ | เบอร์ | ยอดซื้อรวม |
|---|---|---|
| สมชาย ใจดี | 0812345678 | ฿2,500 |
ช่องที่ ว่างเปล่า— ไม่มีเบอร์ ไม่มีอีเมล ไม่มียอด. ปัญหาคือช่องว่างทำให้คำนวณเพี้ยน (เฉลี่ยผิด นับผิด) และทำงานต่อไม่ได้ (ส่งอีเมลไม่ได้เพราะไม่มีอีเมล)
| วันที่ | เบอร์ติดต่อ | ยอดขาย |
|---|---|---|
| 1 มิ.ย. | 0891112222 | ฿8,400 |
| 2 มิ.ย. | (ว่าง) | (ว่าง) |
| 3 มิ.ย. | 0843334444 | ฿6,100 |
| วันที่ | เบอร์ติดต่อ | ยอดขาย |
|---|---|---|
| 1 มิ.ย. | 0891112222 | ฿8,400 |
| 2 มิ.ย. | ไม่มีข้อมูล | ฿7,250 * |
| 3 มิ.ย. | 0843334444 | ฿6,100 |
ค่าเดียวกัน แต่ เขียนคนละแบบ— วันที่ "1/2/68" กับ "2025-02-01", เบอร์ "081-234-5678" กับ "+66 81 234 5678". คอมพิวเตอร์มองเป็นคนละค่า เรียงผิด จับคู่ไม่เจอ
| ลูกค้า | วันเกิด | เบอร์ |
|---|---|---|
| มาลี | 1/2/68 | 081-234-5678 |
| ปิติ | 2025-02-01 | +66 89 111 2222 |
| วิภา | 1 ก.พ. 2568 | 0843334444 |
| ลูกค้า | วันเกิด | เบอร์ |
|---|---|---|
| มาลี | 2025-02-01 | 0812345678 |
| ปิติ | 2025-02-01 | 0891112222 |
| วิภา | 2025-02-01 | 0843334444 |
สิ่งเดียวกัน เรียก หลายชื่อ— "กรุงเทพ" / "กทม." / "Bangkok" / "กรุงเทพฯ" คือที่เดียวกัน แต่ระบบนับแยกกัน. รวมถึงพิมพ์ผิด "กรุงเทพพ". ทำให้สรุปรายจังหวัด/หมวด กระจัดกระจาย
| จังหวัด (ดิบ) | จำนวน |
|---|---|
| กรุงเทพ | 120 |
| กทม. | 80 |
| Bangkok | 45 |
| จังหวัด (มาตรฐาน) | จำนวน |
|---|---|
| กรุงเทพมหานคร | 245 |
ค่าเดียวกันแต่มี ช่องว่างเกินหัว-ท้ายหรือ ตัวพิมพ์ใหญ่-เล็กต่างกัน— " John " / "JOHN" / "john" คนมองว่าเหมือนกัน แต่คอมพิวเตอร์นับเป็น 3 ค่า. เป็นต้นเหตุซ่อนของ"จับซ้ำไม่เจอ" และ "นับแยก"
| ชื่อ (ดิบ) | อีเมล (ดิบ) |
|---|---|
| " John " | Somchai@Gmail.com |
| JOHN | somchai@gmail.com |
| john | SOMCHAI@gmail.com |
| ชื่อ | อีเมล |
|---|---|
| John | somchai@gmail.com |
ค่าที่ เป็นไปไม่ได้หรือผิดชัด ๆ— อายุ 999, ราคาติดลบ, วันที่อยู่ในอนาคต, ยอดขายวันเดียว 100 ล้าน. มักเกิดจากพิมพ์ผิด/นำเข้าเพี้ยน. ถ้าปล่อยไว้ ค่าเฉลี่ย-ยอดรวมจะพังทันที
| รายการ | ค่า | สถานะ |
|---|---|---|
| อายุลูกค้า | 999 | เกินกรอบ |
| ราคาสินค้า | -50 | ติดลบ |
| ยอดขาย 5 มิ.ย. | ฿4,500,000 | พิมพ์เกิน 0 |
| รายการ | ค่า | สถานะ |
|---|---|---|
| อายุลูกค้า | 39 | ✓ ตรวจแล้ว |
| ราคาสินค้า | 50 | ✓ แก้เครื่องหมาย |
| ยอดขาย 5 มิ.ย. | ฿45,000 | ✓ ตัด 0 เกิน |
ตัวเลขถูกเก็บเป็น "ข้อความ"— หน้าตาเหมือนเลข แต่คอมพิวเตอร์มองเป็นตัวหนังสือ. ผลคือ บวกเลขไม่ได้(ได้ "100200" แทน 300) และ เรียงผิด("10" มาก่อน "9")
| เดือน | ยอด (ข้อความ) |
|---|---|
| เม.ย. | "฿1,200" |
| พ.ค. | "฿900" |
| รวม (SUM) | ✗ error / 0 |
| เดือน | ยอด (ตัวเลข) |
|---|---|
| เม.ย. | 1200 |
| พ.ค. | 900 |
| รวม (SUM) | 2100 ✓ |
ปัญหาทั้ง 7 ข้อข้างบน ส่วนใหญ่กันได้ตั้งแต่ตอนกรอก— แก้ที่ "ต้นทาง" (หน้าฟอร์ม/ช่องกรอก) ถูกและเร็วกว่ามานั่งไล่ล้างทีหลังเป็นร้อยเท่า. ของเสียที่ไม่เข้ามา = ไม่ต้องล้าง
| ช่อง | ที่ลูกค้ากรอก |
|---|---|
| จังหวัด | กทม / กรุงเทพ / bkk |
| เบอร์ | 081-234 (ไม่ครบ) |
| อีเมล | somchai (ไม่มี @) |
| ช่อง | รับเฉพาะ |
|---|---|
| จังหวัด | ▼ เลือกจาก 77 จังหวัด |
| เบอร์ | ตัวเลข 10 หลักเท่านั้น |
| อีเมล | ต้องมี @ + จุด |
ถ้าข้อมูลกองโตเป็นหมื่นแถว ล้างมือไม่ไหว — ให้ AI เขียนสคริปต์ให้. คุณไม่ต้องเขียนโค้ดเป็น แค่บอกว่า "ไฟล์หน้าตาแบบนี้ อยากได้แบบนี้" AI จะร่างสคริปต์หา duplicate / standardize ให้รันได้เลย
| งาน | AI ช่วยยังไง |
|---|---|
| หาข้อมูลซ้ำ | เขียนสคริปต์จับซ้ำด้วยเบอร์/อีเมล |
| จัดรูปแบบ | แปลงวันที่/เบอร์ทั้งคอลัมน์ |
| รวมชื่อต่าง | ร่างตาราง mapping ให้ตรวจ |
| หาค่าผิดปกติ | ไล่หาค่าหลุดกรอบมาให้ดู |
| แปลงชนิด | ลบ ฿ , แล้วเปลี่ยนเป็นตัวเลข |
| สรุปคุณภาพ | บอกว่าไฟล์มีปัญหากี่จุด ตรงไหน |
| ไม่มีลูกค้า/สินค้าซ้ำ (ยุบด้วยเบอร์/อีเมลแล้ว) | ✓ ไม่ซ้ำ |
| ช่องว่างถูกเติม หรือทำเครื่องหมาย "ไม่มี" (ไม่ปล่อยเปล่า) | ✓ ไม่ขาด |
| วันที่/เบอร์/เงิน รูปแบบเดียวกันทั้งคอลัมน์ | ✓ รูปแบบตรง |
| ชื่อ/จังหวัด/หมวด ใช้ค่ามาตรฐานเดียว (ไม่สะกดต่าง) | ✓ ชื่อนิ่ง |
| ตัด trim ช่องว่าง + ตัวพิมพ์ปรับให้ตรง | ✓ สะอาดตา |
| ไม่มีค่าเป็นไปไม่ได้ (อายุ 999, ติดลบ, อนาคต) | ✓ ค่าสมเหตุผล |
| ตัวเลขเป็นชนิดตัวเลข (บวก/เรียงได้) เบอร์เป็นข้อความ | ✓ ชนิดถูก |
| มี validation ที่ฟอร์มกรอก (กันของเสียเข้าใหม่) | ✓ กันต้นทาง |
คือการแก้ข้อมูลที่ "สกปรก" ให้ใช้งานได้ — ลบข้อมูลซ้ำ เติมข้อมูลที่ขาด จัดรูปแบบให้ตรงกัน รวมชื่อที่สะกดต่าง และตัดค่าผิดปกติออก. เป้าหมายคือให้รายงานและการตัดสินใจที่อิงข้อมูลนี้ "ถูกต้อง" เพราะ garbage in = garbage out (ข้อมูลขยะเข้า → ผลลัพธ์ขยะออก)
ข้อมูลซ้ำ (duplicate) = สิ่งเดียวกันมีหลายแถว เช่นลูกค้าคนเดียวโผล่ 3 ครั้ง ทำให้นับเกินจริง. ข้อมูลขาด (missing/null) = ช่องว่างเปล่า ไม่มีค่า เช่นไม่มีเบอร์ ทำให้คำนวณเพี้ยนและทำงานต่อไม่ได้. ซ้ำ→ยุบรวม, ขาด→เติม/ทำเครื่องหมาย/ตัดทิ้งตามกรณี
ได้. ข้อมูลปริมาณน้อยใช้ Excel/Google Sheets ก็พอ (ฟังก์ชัน Remove Duplicates, TRIM, Find & Replace). ข้อมูลกองใหญ่ให้ AI อย่าง Claude เขียนสคริปต์ให้ — คุณแค่บอกว่าไฟล์หน้าตาแบบไหน อยากได้แบบไหน แล้วเอาสคริปต์ไปรัน (ตรวจผลกับสำเนาก่อนเสมอ)
กันที่ "ต้นทาง" คือหน้าฟอร์มกรอก — บังคับรูปแบบ (เบอร์ 10 หลัก, อีเมลต้องมี @), ใช้ dropdown ให้เลือกแทนพิมพ์เอง (กันสะกดต่าง), และกันค่าซ้ำตอนสมัคร. การกันที่ต้นทางถูกและเร็วกว่ามาไล่ล้างทีหลังหลายเท่า