# Data cleansing

&#x20;    Data cleansing หรือ Data cleaning นั้นคือวิธีการจัดการกับข้อมูลรูปแบบหนึ่งเพื่อลดปริมาณข้อมูลขยะ (Dirty data) ข้อมูลที่มีความผิดพลาด, มีไม่ครบ, ไม่ตรงกับชุดข้อมูลที่กำหนดมา, ข้อมูลที่มีซ้ำๆ ทั้งหมดนี้ล้วนแต่เป็นข้อมูลขยะ การที่เรามีข้อมูลแบบนี้จำนวนมากนอกจากจะทำให้เปลืองพื้นที่การจัดเก็บแล้วยังจะทำให้การนำข้อมูลเหล่านี้ไปใช้วิเคราะห์แล้วยังเกิดความผิดพลาดอีกด้วย ดังนั้นข้อมูลเหล่านี้ควรจะถูกกำจัดหรือแก้ไขก่อนนำไปใช้งานเพื่อเพิ่มประสิทธิภาพของความถูกต้องของข้อมูล

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FmjGB9OdQCGkUy3YDGtX9%2Fimage.png?alt=media\&token=9d029037-21d5-4097-b2c4-6243322ce512)

### &#x20;ขั้นตอนการทำ Data cleansing

**step 1 : นำข้อมูลซ้ำหรือข้อมูลไม่เกี่ยวข้องออก**

&#x20;    ขั้นตอนนี้จะเป็นการกรองข้อมูลออกเพื่อลดขนาดของการใช้จัดเก็บข้อมูล โดยการลบข้อมูลที่มีการซ้ำกันออก ข้อมูลที่มีการซ้ำกันมักจะไม่ค่อยเกิดขึ้นตามปกติ ส่วนน้อยจะเกิดจากการบันทึกของผู้ใช้งานลืมว่าเคยใส่ข้อมูลไปแล้วหรือบางครั้งระบบ บันทึกข้อมูลแสดงผลว่า error แต่ข้อมูลก็ถูกจัดเก็บทำให้ผู้ใช้งานใส่ข้อมูลซ้ำลงไปอีกครั้ง การเกิดการซ้ำของข้อมูลนั้นส่วนใหญ่นั้นจะเกิดขึ้นจากการรวมกันของฐานข้อมูลหลายๆฐานข้อมูลมากกว่า<br>

<div align="center"><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2Fx05qtawUGlvGufoG69P0%2Fimage.png?alt=media&#x26;token=7f5c08ed-990e-4792-a0c2-d524e1090539" alt="การจัดการกับข้อมูลซ้ำๆ"></div>

หลังจากเราจัดการกับการซ้ำกันของข้อมูลแล้ว จากนั้นเราต้องจัดการกับข้อมูลที่ไม่มีความเกี่ยวข้องด้วย เช่น เราต้องการที่จะเก็บข้อมูลของพนักงานและเงินเดือนที่ได้ โดยข้อมูลที่ได้รับมามีดังนี้

|    ชื่อ    | อายุ |  เพศ | อายุงาน | ที่อยู่ | เงินเดือน |
| :--------: | :--: | :--: | :-----: | :-----: | :-------: |
|  นายสมปอง  |  36  |  ชาย |    5    |  แถวนี้ |   30,000  |
| นายประหยัด |  67  |   7  |    8    | แถวนั้น |   50,000  |
|  นางสาวปลา |  420 | หญิง | แถวบ้าน |    2    |   27,000  |
|            |      |      |         |         |           |

จะเห็นได้ว่าแถวที่ 2 นั้นมีการใส่ข้อมูลที่ไม่ตรงกับประเภทข้อมูลที่ใส่ และแถวที่ 3 นั้นมีการใส่อายุที่เกิน และมีค่าที่สลับกันระหว่างอายุงานกับที่อยู่ ข้อมูลเหล่านี้จะต้องนำไป Cleansing ก่อนนำไปใช้งาน

**step 2 : จัดการให้อยู่ในมาตรฐานเดียวกัน**

&#x20;    การจัดมาตรฐาน (Standardise) คือการเปลี่ยน format ของข้อมูลให้อยู่ในรูปแบบเดียวกันเพื่อให้ง่ายต่อการจัดกลุ่มเช่น มีข้อมูลที่ใส่มาดังต่อไปนี้

* Bangkok
* Krung thep
* กรุงเพท
* กรุงเทพฯ
* กรุงเทพมหานคร

ข้อมูลทั้งหมดนี้เราสามารถรู้ได้ว่าทั้งหมดสื่อความหมายเดียวกัน แต่ว่า format ข้อมูลนั้นแตกต่างกันดังนั้นข้อมูลเหล่านี้ควรถูกจัดการให้อยู่ในรูปแบบเดียวกัน เช่นเปลี่ยนชื่อทั้งหมดให้เป็น "กรุงเทพ" เป็นต้น หลังจากทำการจัดมาตรฐานแล้ว ข้อมูลของเรานั้นจะสามารถถูกจัดกลุ่มให้อยู่หมวดเดียวกันได้ง่าย เมื่อทำการจัดมาตรฐานเรียบร้อยแล้วควรมีการ De-duplicate (ลบค่าซ้ำ) อีกครั้งเนื่องจากตอนแรกเราไม่สามารถเห็นได้เนื่องจากขอมูลอยู่ใน format ที่แตกต่างกัน

**Step 3: จัดการกับค่าที่หายไป**

&#x20;    ขั้นตอนนี้เป็นขั้นตอนที่ยากที่สุดในการ cleansing เนื่องจากค่าบางประเภทอาจจะต้องใช้การคำนวณหา trend ของข้อมูลทั้งหมดออกมาก่อนถึงจะเติมค่าลงไปได้ หรือบางค่าอาจจะต้องใช้ numerical approach เพื่อนำค่ารอบๆมาคำนวณหาค่าที่หายไปจากช่องนั้น ค่าบางคาอาจเติมได้ด้วยการอนุมาณเช่น ถ้าช่องแสดง เพศ หายไปเราสามารถอนุมาณได้จากคำนำหน้าชื่อ&#x20;

![](https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FJxwQMvwpmC9bUbRZmytB%2Fimage.png?alt=media\&token=e0d383b9-2066-4bba-8997-5e3bb03465ba)

หรือ ถ้าที่อยู่หายไปเราก็สามารถอนุมาณได้จากรหัสไปรษณีย์ ส่วนใหญ่แล้วถ้าไม่ใช่ข้อมูลที่เก็บได้ยาก เราควรเก็บข้อมูลชุดนั้นๆใหม่เพื่อความถูกต้องของข้อมูล

## แบบฝึกหัด

จากข้อมูลที่ให้ด้านล่าง ให้นำความรู้ที่ได้เรียนมาเมื่อครู่นี้นำไปจัดการกับชุดข้อมูลที่ให้

{% embed url="<https://docs.google.com/spreadsheets/d/1H-YvUjYv6cYbOjwXJZsKXVzKrJGqLk6NF25-sp-G2lY/edit?usp=sharing>" %}

ให้สำเนาชุดข้อมูลนี้ไปแก้ไขเป็นของตัวเอง

Last update: May 2022

Author: Thanaluk Pranekunakol (AIC-Researcher)
