\(~~~~~~~~~~\)Data Wrangling\(~~~~~~~~~~\)
การทำความสะอาดข้อมูล

อ.ดร. สมศักดิ์ จันทร์เอม

วิทยาลัยนานาชาตินวัตกรรมดิจิทัล มหาวิทยาลัยเชียงใหม่

13 พฤศจิกายน 2568

Data Wrangling

การจัดการข้อมูล (Data Wrangling) หรือที่เรียกว่า การทำความสะอาดข้อมูล (Data Cleaning) หรือ การปรับปรุงข้อมูล (Data Remediation) คือกระบวนการในการ แปลงและปรับแต่งข้อมูล ให้อยู่ในรูปแบบที่เหมาะสมและพร้อมสำหรับการนำไปใช้งานหรือวิเคราะห์ต่อไป

กิจกรรมทั่วไปในการจัดการข้อมูล (Common Data Wrangling Activities)

  • การรวมข้อมูล (Merging): รวมข้อมูลจากหลายแหล่งเข้าด้วยกันเป็นชุดข้อมูลเดียวเพื่อใช้ในการวิเคราะห์

  • การระบุค่าที่หายไป (Identifying Missing Values): ตรวจหาค่าที่ขาดหาย (เช่น ช่องว่างในสเปรดชีต) เพื่อเติมหรือเอาออก

  • การลบข้อมูลที่ไม่จำเป็น (Removing Irrelevant Data): ลบข้อมูลที่ไม่เกี่ยวข้องกับโครงการหรือวัตถุประสงค์ของการวิเคราะห์

  • การตรวจจับค่าผิดปกติ (Detecting Outliers): ค้นหาค่าที่สุดโต่งเกินไปในข้อมูล และอธิบายหรือเอาออกเพื่อให้การวิเคราะห์ถูกต้องมากขึ้น

Data Frames

Data Frame คือชุดข้อมูลที่แสดงในรูปแบบ ตาราง (Tabular Format) โดยที่แต่ละคอลัมน์สามารถเก็บข้อมูลได้หลายประเภท เช่น

  • ตัวอักษร (Character)

  • ตัวเลข (Numeric)

  • ตรรกะ (Logical)

  • วันที่ (Date)

  • เป็นต้น

ข้อมูลของประเทศไทยและประเทศจีนจาก Gapminder

การปรับรูปแบบข้อมูล (Reshaping Data)

การปรับรูปแบบข้อมูล (Reshaping Data) หมายถึงการปรับเปลี่ยนหรือแปลงโครงสร้างของชุดข้อมูล เพื่อให้เหมาะสมยิ่งขึ้นสำหรับการวิเคราะห์หรือการนำเสนอ

แนวคิดสำคัญของการปรับรูปแบบข้อมูล

การปรับรูปแบบมักเกี่ยวข้องกับการแปลงข้อมูลจากรูปแบบหนึ่งไปสู่อีกรูปแบบหนึ่ง เช่น:

  • Wide formatLong format (แปลงข้อมูลจากรูปแบบแนวนอนให้เป็นแนวตั้ง)

  • Long formatWide format (แปลงข้อมูลจากแนวตั้งให้เป็นแนวนอน)

Wide format → Long format

  • คอลัมน์ lifeExp, pop และ gdpPercap ซึ่งเดิมแยกกันอยู่ จะถูกรวมให้อยู่ในคอลัมน์เดียว ที่ชื่อว่า metric

  • ค่าของตัวแปรเหล่านี้จะถูกย้ายไปอยู่ในคอลัมน์ใหม่ที่ชื่อว่า value

Long format → Wide format

  • ค่าที่เคยถูกเก็บไว้ในคอลัมน์ metric ตอนนี้จะถูก แยกกลับออกมาเป็นคอลัมน์แยกต่างหาก ได้แก่ lifeExp, pop, และ gdpPercap

  • ค่าจากคอลัมน์ value จะถูก กระจายกลับไปยังตัวแปรที่สอดคล้องกัน

การรวมหลายคอลัมน์ให้เป็นคอลัมน์เดียว (Combine Multiple Columns into a Single Column)

การรวมตัวแปร country และ year เข้าด้วยกันให้อยู่ในคอลัมน์เดียว

การแยกคอลัมน์เดียวออกเป็นหลายคอลัมน์ (Split a Column into Multiple Columns)

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

คุณสามารถเรียงลำดับข้อมูลตามคอลัมน์ เช่น year, lifeExp, หรือ pop ได้ (คลิกที่หัวคอลัมน์เพื่อจัดเรียงข้อมูล)

การเปลี่ยนชื่อตัวแปร (ห้ามใช้ชื่อซ้ำกัน)

เปลี่ยนชื่อตัวแปร country

เปลี่ยนชื่อตัวแปร year

เปลี่ยนชื่อตัวแปร lifeExp

เปลี่ยนชื่อตัวแปร pop

เปลี่ยนชื่อตัวแปร gdpPercap

การเลือกบางส่วนของข้อมูลแถว (Subset Observations / Rows)

  • เลือกแถวที่ตรงตามเงื่อนไขทางตรรกะ (logical condition)

  • สุ่มเลือกบางส่วนของชุดข้อมูลเป็นสัดส่วน (fraction)

  • สุ่มเลือกจำนวนแถวที่กำหนด (โดยไม่เกินจำนวนทั้งหมด)

  • เลือกแถวตามลำดับตำแหน่งที่ระบุไว้

Filter Rows by Logical Condition

การกรองแถวด้วยเงื่อนไขทางตรรกะ

เลือกแถวที่ตรงตามเงื่อนไขทางตรรกะเช่น: จากปี
ขึ้นไป(จากจำนวนทั้งหมด แถว)

การสุ่มเลือกบางส่วนของชุดข้อมูล

สุ่มเลือกตัวอย่างข้อมูลเป็นสัดส่วนจากทั้งชุดข้อมูล เช่น ของข้อมูลทั้งหมด (จากจำนวนทั้งหมด แถว)

การสุ่มเลือกจำนวนแถวที่กำหนด (โดยไม่เกินจำนวนที่มีอยู่)

Randomly sample rows

การเลือกแถวตามตำแหน่งที่ระบุ

Select rows from to

การเลือกบางส่วนของตัวแปร (โดยใช้เงื่อนไขของตัวแปร)

  • เลือกคอลัมน์ตามชื่อตัวแปรที่ระบุ

  • เลือกคอลัมน์ที่มีข้อความบางส่วนอยู่ในชื่อคอลัมน์

  • เลือกคอลัมน์ที่ลงท้ายด้วยอักขระหรือข้อความที่กำหนด

  • เลือกทุกคอลัมน์

  • เลือกคอลัมน์ที่ตรงกับรูปแบบที่กำหนด (Regular Expression)

  • เลือกคอลัมน์จากรายการชื่อที่ระบุไว้

  • เลือกทุกคอลัมน์ ยกเว้นบางคอลัมน์ที่กำหนดไว้

การเลือกคอลัมน์ตามชื่อตัวแปร

Select Variables

การเลือกคอลัมน์ที่มีข้อความบางส่วนที่ระบุ

Search Column Names

หากต้องการค้นหาหลายคำสำคัญ ให้คั่นแต่ละคำด้วยเครื่องหมายจุลภาค โดยไม่เว้นวรรค สามารถใช้ได้สูงสุด 5 คำสำคัญ เช่น: pop, life, count

การสรุปข้อมูล (Summarise Data)

1 เลือกตัวแปรที่คุณต้องการคำนวณ

2 เลือกสถิติที่คุณต้องการคำนวณ

3 ต้องการจัดกลุ่มการคำนวณตามตัวแปร country หรือไม่?

การสร้างตัวแปรใหม่ (Create New Variables)

ตัวอย่างของตัวแปรใหม่ที่สามารถสร้างได้

1. Total GDP of a Country (gdpTotal)

\[\tiny \text{gdpTotal} = \text{gdpPercap} \times \text{pop}\]

ความหมาย: คำนวณ GDP รวมของประเทศ โดยใช้สูตร gdpPercap × pop

2. Convert Population to Millions (pop_million)

\[\tiny \text{pop_million} = \dfrac{\text{pop}}{1,000,000}\]

ความหมาย: แปลงหน่วยประชากรจาก “คน” เป็น “ล้านคน” โดยหารค่า pop ด้วย 1,000,000

New Data Set

Data Set A

Data Set B

กำหนดให้:

  • ชุดข้อมูล A มีตัวแปร x1 และ x2

  • ชุดข้อมูล B มีตัวแปร x1 และ x3

การรวมชุดข้อมูล (Combining Data Sets)

Left join: ใช้สำหรับรวมข้อมูลจากสองตาราง (data frames) โดยจะเก็บทุกแถวจากตารางหลัก (ด้านซ้าย) และนำแถวที่ตรงกันจากตารางรอง (ด้านขวา) มารวมกัน โดยอ้างอิงจาก คีย์ร่วม (shared key)


Right join: ใช้สำหรับรวมข้อมูลจากสองตาราง (data frames) โดยจะเก็บทุกแถวจากตารางรอง (ด้านขวา) และนำแถวที่ตรงกันจากตารางหลัก (ด้านซ้าย) มารวมกัน โดยอ้างอิงจาก คีย์ร่วม (shared key)


Inner join: ใช้สำหรับรวมข้อมูลจากสองตาราง (data frames) โดยจะเก็บเฉพาะแถวที่มีค่าของคีย์ตรงกันในคอลัมน์ที่ใช้ในการเชื่อมต่อเท่านั้น


Full join: ใช้สำหรับรวมข้อมูลจากสองตาราง (data frames) โดยจะเก็บทุกแถวจากทั้งสองตาราง ไม่ว่าจะมีค่าคีย์ตรงกันหรือไม่ก็ตาม หากค่าคีย์ในตารางหนึ่งไม่มีในอีกตารางหนึ่ง ระบบจะใส่ค่า NA แทนค่าที่ขาดหายไป


ทำไมเราจึงต้องใช้การเข้ารหัสแบบ One-Hot

ปัญหาของข้อมูลเชิงประเภท (Categorical Data)

  • โมเดล Machine Learning ไม่สามารถตีความค่าข้อความ เช่น "Regular", "VIP", "New" ได้โดยตรง

  • การใช้ค่าตัวเลข เช่น 1, 2, 3 จะทำให้เกิด ลำดับที่ไม่จริง (False Ordinal Relationships) ซึ่งอาจสื่อว่า "VIP" > "Regular" ทั้งที่ในความเป็นจริงอาจไม่ถูกต้อง

การเข้ารหัสแบบ One-Hot ช่วยแก้ปัญหานี้ได้

  • แปลงค่าประเภทให้เป็น ตัวแปรแบบไบนารีอิสระ (Independent Binary Variables)

  • หลีกเลี่ยงการตีความว่า มีลำดับหรือระยะห่างระหว่างประเภท

  • ทำให้ข้อมูลสามารถใช้กับ อัลกอริทึม เช่น Logistic Regression, Decision Trees, Neural Networks ได้อย่างถูกต้อง

Example: Customer Type

Data

\(\rightarrow\)

One hot encode

กรณีการใช้งานทางธุรกิจ (Business Use Cases)

  • การแบ่งกลุ่มลูกค้า (Customer Segmentation)

  • การพยากรณ์การยกเลิกบริการหรือพฤติกรรมการซื้อ (Predicting Churn or Purchase Behavior)

  • การจำแนกประเภทของธุรกรรมหรือการร้องเรียน (Classifying Transactions or Complaints by Category)

ทำไมเราจึงต้องทำการปรับขนาดข้อมูล (Normalize Data)?

1. เพื่อให้การเปรียบเทียบเป็นธรรม (Ensures Fair Comparison)

  • ตัวแปรเช่น ยอดขาย (Sales) (หน่วยเป็นพัน) และ อายุของลูกค้า (Customer Age) (หน่วยเป็นปี) มี สเกล (Scale) ที่แตกต่างกัน

  • หากไม่ทำการปรับขนาดข้อมูล (Normalization) ค่าที่มีขนาดใหญ่กว่าจะมีอิทธิพลเหนือกระบวนการเรียนรู้ของโมเดล

2. ช่วยเพิ่มประสิทธิภาพของโมเดล (Improves Model Performance)

  • อัลกอริทึมอย่าง K-Means, K-NN, SVM, Neural Networks อาศัย ระยะทาง (Distance) หรือ ค่าความชัน (Gradients) ในการคำนวณ

  • การปรับขนาดข้อมูล (Normalization) ช่วยให้โมเดล เรียนรู้ได้เร็วขึ้น (Faster Convergence) และให้ผลลัพธ์ที่ แม่นยำมากขึ้น (More Accurate Results)

3. ป้องกันอคติจากขนาดของตัวแปร (Prevents Bias from Feature Magnitude)

  • ตัวแปรที่มีค่าตัวเลขขนาดใหญ่ (เช่น รายได้) อาจ มีอิทธิพลมากเกินไป (Overpower) ต่อตัวแปรที่มีสเกลเล็กกว่า (เช่น ความถี่ในการซื้อสินค้า)

  • การทำ Normalization ช่วยให้ตัวแปรแต่ละตัว มีน้ำหนักเท่าเทียมกัน (Equal Weight)

Normalize vs Standardize Fomula

1. การปรับขนาดแบบมิน-แมกซ์ (Min-Max Normalization)

ปรับค่าข้อมูลให้อยู่ในช่วงคงที่ โดยทั่วไปคือ \([0, 1]\):

\[ x' = \frac{x - \min(x)}{\max(x) - \min(x)} \]

เหมาะสำหรับกรณีที่ ช่วงของค่า (Range) มีความสำคัญ เช่น ในโมเดล Neural Networks

Data

\(\rightarrow\)

Min-Max Normalization:

2. การปรับมาตรฐานแบบ Z-Score (Z-Score Standardization)

หรือเรียกว่า การปรับขนาดแบบมาตรฐาน (Standard Scaling):

\[ x' = \frac{x - \mu}{\sigma} \]

โดยที่:

  • \(\mu\) คือค่าเฉลี่ย (Mean)
  • \(\sigma\) คือส่วนเบี่ยงเบนมาตรฐาน (Standard Deviation)

เหมาะสำหรับกรณีที่ข้อมูลมี หน่วยที่แตกต่างกัน หรือมี ค่าผิดปกติ (Outliers)

Data

\(\rightarrow\)

Standardization:

References

  • Wickham, H., François, R., Henry, L., Müller, K., & Vaughan, D. (2023). dplyr: A Grammar of Data Manipulation (เวอร์ชัน 1.1.4) [ซอฟต์แวร์คอมพิวเตอร์]. สืบค้นจาก https://dplyr.tidyverse.org

  • Wickham, H., Vaughan, D., & Girlich, M. (2024). tidyr: Tidy Messy Data (เวอร์ชัน 1.3.1) [ซอฟต์แวร์คอมพิวเตอร์]. สืบค้นจาก https://tidyr.tidyverse.org