เมธอด dropna() ใช้สำหรับลบแถว (rows) หรือคอลัมน์ (columns) ที่มีค่า NaN (Not a Number / Missing Values) ออกจาก DataFrame เป็นวิธีพื้นฐานในการทำความสะอาดข้อมูล (Data Cleaning)
พารามิเตอร์สำคัญของ dropna()
| พารามิเตอร์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
axis | 0 (index/rows) | 0 = ลบแถว, 1 = ลบคอลัมน์ |
how | 'any' | 'any' = ลบถ้ามี NaN อย่างน้อย 1 ตัว, 'all' = ลบถ้าทุกค่าเป็น NaN |
thresh | None | จำนวนค่าที่ไม่ใช่ NaN ขั้นต่ำที่ต้องมีเพื่อเก็บแถวไว้ |
subset | None | รายชื่อคอลัมน์ที่จะตรวจสอบ NaN (เฉพาะคอลัมน์เหล่านี้) |
inplace | False | True = แก้ไข DataFrame เดิม, False = คืน DataFrame ใหม่ |
ตัวอย่างการใช้งาน
1. โหลดข้อมูลที่มี NaN
import pandas as pd
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame:\n", dataFrame)
print("\nRows, Cols:", dataFrame.shape)
2. ลบแถวที่มี NaN (ค่าเริ่มต้น)
dataFrame = dataFrame.dropna()
print("\nDataFrame หลัง dropna():\n", dataFrame)
print("\nRows, Cols ใหม่:", dataFrame.shape)
3. ตัวอย่างพารามิเตอร์อื่นๆ
# ลบคอลัมน์ที่มี NaN
df.dropna(axis=1)
# ลบเฉพาะแถวที่ ทุกค่าเป็น NaN
df.dropna(how='all')
# เก็บแถวที่มีค่าที่ไม่ใช่ NaN อย่างน้อย 2 ค่า
df.dropna(thresh=2)
# ตรวจสอบ NaN เฉพาะคอลัมน์ UnitsSold
df.dropna(subset=['UnitsSold'])
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame:\n", dataFrame)
print("\nRows, Cols:", dataFrame.shape)
# ลบแถวที่มี NaN
dataFrame = dataFrame.dropna()
print("\nDataFrame หลังลบ NaN:\n", dataFrame)
print("\nRows, Cols ใหม่:", dataFrame.shape)
ผลลัพธ์
DataFrame:
Car Place UnitsSold
0 Audi Bangalore 80.0
1 Porsche Mumbai 110.0
2 RollsRoyce Pune NaN
3 BMW Delhi 200.0
4 Mercedes Hyderabad 80.0
5 Lamborghini Chandigarh NaN
6 Audi Mumbai NaN
7 Mercedes Pune 120.0
8 Lamborghini Delhi 100.0
Rows, Cols: (9, 3)
DataFrame หลังลบ NaN:
Car Place UnitsSold
0 Audi Bangalore 80.0
1 Porsche Mumbai 110.0
3 BMW Delhi 200.0
4 Mercedes Hyderabad 80.0
7 Mercedes Pune 120.0
8 Lamborghini Delhi 100.0
Rows, Cols ใหม่: (6, 3)
แนวทางปฏิบัติที่ดี (Best Practices)
- ตรวจสอบสัดส่วนข้อมูลที่หายไปก่อนตัดสินใจลบ (
df.isnull().mean()) - พิจารณา
fillna()(Imputation) แทนการลบ ถ้าข้อมูลมีค่า - ใช้
subsetเพื่อลบเฉพาะคอลัมน์สำคัญที่ห้ามมี NaN - เก็บ log ของแถวที่ถูกลบไว้เพื่อตรวจสอบภายหลัง