# Data cleansing

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

![](/files/BDsvk4mSqLXBntou9fai)

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

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

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

<div align="center"><img src="/files/0Ddh1VDjHNtRPwTeNTvh" 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;

![](/files/9LKentReJITbU50zpV9C)

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

## แบบฝึกหัด

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

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

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

Last update: May 2022

Author: Thanaluk Pranekunakol (AIC-Researcher)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aic-eec.com/artificial-intelligence-ai/data-analytics/data-cleansing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
