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

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

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

7 ธันวาคม 2568

ตัวอย่างปัญหา

แต่ละคนจะมีคะแนนไม่เท่ากัน

ตัวแปร ปัญหา แนวทางแก้ไข
age Missing values (NA) Imputation / remove rows
income Outliers Winsorize / filter / validate
height Wrong data type Convert to numeric
gender Inconsistent labels Normalize values
score Duplicate rows Remove or investigate

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