การจัดการข้อมูลที่หายไป

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

Darryl Reeves, Ph.D.

Industry Assistant Professor, New York University

ข้อมูลที่หายไป (ตัวอย่าง)

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     |       | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...

รูปแบบที่ใช้แทนค่าที่หายไป:

  • NULL (ทั่วไป)
  • '' - สตริงว่าง (ใช้กับคอลัมน์ประเภทสตริง)
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

สาเหตุของข้อมูลที่หายไป

สาเหตุของข้อมูลที่หายไป? ปริศนาสีดำที่มีชิ้นส่วนหายไป

  • ภาพแสดงสมองมนุษย์ในเงาหัว ความผิดพลาดของมนุษย์
  • ภาพของเฟือง ปัญหาเชิงระบบ
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

ประเภทของข้อมูลที่หายไป

ภาพสามรูปแสดงประเภทของข้อมูลที่หายไปพร้อมหมวดหมู่และตัวย่อของแต่ละประเภท

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

ประเภทของข้อมูลที่หายไป

ภาพสามรูปแสดงประเภทของข้อมูลที่หายไปพร้อมหมวดหมู่และตัวย่อ รวมถึงคำอธิบาย Missing Completely at Random

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

ประเภทของข้อมูลที่หายไป

ภาพสามรูปแสดงประเภทของข้อมูลที่หายไปพร้อมหมวดหมู่และตัวย่อ รวมถึงคำอธิบาย Missing at Random

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

ประเภทของข้อมูลที่หายไป

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     |       | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

ประเภทของข้อมูลที่หายไป

ภาพสามรูปแสดงประเภทของข้อมูลที่หายไปพร้อมหมวดหมู่และตัวย่อ รวมถึงคำอธิบาย Missing Not at Random

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

การระบุข้อมูลที่หายไป

SELECT
  *
FROM
  restaurant_inspection
WHERE
  score IS NULL;
SELECT
  COUNT(*)
FROM
  restaurant_inspection
WHERE
  score IS NULL;
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

การระบุข้อมูลที่หายไป

SELECT
  inspection_type,
  COUNT(*) as count
FROM
  restaurant_inspection
WHERE
  score IS NULL
GROUP BY
  inspection_type
ORDER BY
  count DESC;
                  inspection_type                  | count 
 --------------------------------------------------+-------
 Administrative Miscellaneous / Initial Inspection |   104
 Smoke-Free Air Act / Initial Inspection           |    29
 Calorie Posting / Initial Inspection              |    22
 Administrative Miscellaneous / Re-inspection      |    22
 Trans Fat / Initial Inspection                    |    18
 Smoke-Free Air Act / Re-inspection                |     7
 Trans Fat / Re-inspection                         |     3
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

การแก้ไขข้อมูลที่หายไป

  • วิธีที่ดีที่สุด: ค้นหาและเพิ่มค่าที่หายไป

    • อาจไม่สามารถทำได้เสมอไป
    • อาจไม่คุ้มค่าในบางกรณี
  • กำหนดค่าแทน (เช่น ค่าเฉลี่ย, มัธยฐาน)

  • ตัดแถวข้อมูลออก

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

การแทนที่ค่าที่หายไปด้วย COALESCE()

COALESCE(arg1, [arg2, ...])

SELECT
  name,
  COALESCE(score, -1),
  inspection_type
FROM
  restaurant_inspection;
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

การแทนที่ค่าที่หายไปด้วย COALESCE()

 ... |       name       | score |               inspection_type                | ... 
 ----+------------------+-------+----------------------------------------------+-----
 ... | ...              | ...   | ...                                          | ...
 ... | SCHNIPPERS       | 27    | Cycle Inspection / Initial Inspection        | ...
 ... | ATOMIC WINGS     | -1    | Administrative Miscellaneous / Re-inspection | ...
 ... | WING LING        | 44    | Cycle Inspection / Initial Inspection        | ...
 ... | JUAN VALDEZ CAFE | 24    | Cycle Inspection / Initial Inspection        | ...
 ... | FULTON GRAND     | 22    | Cycle Inspection / Initial Inspection        | ...
 ... | ...              | ...   | ...                                          | ...
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

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

การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL

Preparing Video For Download...