เมธอด dropna() ใช้ลบแถวหรือคอลัมน์ที่มีค่า NaN (Missing Values) ออกจาก DataFrame เป็นขั้นตอนสำคัญใน Data Cleaning ก่อนทำการวิเคราะห์ต่อ
ขั้นตอนการทำงาน
1. โหลดข้อมูลที่มี NaN
import pandas as pd
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame with NaN:\n", dataFrame)
print("\nRows, Cols:", dataFrame.shape)
2. ใช้ dropna() ลบแถวที่มี NaN
clean_df = dataFrame.dropna()
print("\nDataFrame after dropna():\n", clean_df)
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
dataFrame = pd.read_csv(r"C:\Users\amit_\Desktop\CarRecords.csv")
print("DataFrame with some NaN (missing) values:\n", dataFrame)
print("\nRows, Cols:", dataFrame.shape)
# ลบแถวที่มี NaN
clean_df = dataFrame.dropna()
print("\nDataFrame after removing NaN values:\n", clean_df)
ผลลัพธ์
DataFrame with some NaN (missing) values:
Car Place UnitsSold
0 Audi Bangalore 80.0
1 Porsche Mumbai NaN
2 RollsRoyce Pune 100.0
3 BMW Delhi NaN
4 Mercedes Hyderabad 80.0
5 Lamborghini Chandigarh 80.0
6 Audi Mumbai NaN
7 Mercedes Pune 120.0
8 Lamborghini Delhi 100.0
Rows, Cols: (9, 3)
DataFrame after removing NaN values:
Car Place UnitsSold
0 Audi Bangalore 80.0
2 RollsRoyce Pune 100.0
4 Mercedes Hyderabad 80.0
5 Lamborghini Chandigarh 80.0
7 Mercedes Pune 120.0
8 Lamborghini Delhi 100.0
พารามิเตอร์สำคัญ (ซ้ำจากบทความก่อนแต่สรุปให้ครบ)
# ลบแถวที่มี NaN อย่างน้อย 1 ตัว (default)
df.dropna()
# ลบคอลัมน์ที่มี NaN
df.dropna(axis=1)
# ลบแถวที่ทุกค่าเป็น NaN
df.dropna(how='all')
# เก็บแถวที่มีค่าไม่ใช่ NaN อย่างน้อย 2 ค่า
df.dropna(thresh=2)
# ตรวจสอบ NaN เฉพาะคอลัมน์สำคัญ
df.dropna(subset=['UnitsSold'])
# แก้ไข DataFrame เดิม
df.dropna(inplace=True)
ตัวเลือกแทนการลบ: Imputation (เติมค่า)
# เติมด้วยค่าเฉลี่ย
df['col'].fillna(df['col'].mean())
# เติมด้วยค่ามัธยฐาน (robust กว่า)
df['col'].fillna(df['col'].median())
# Forward/Backward fill (time series)
df.fillna(method='ffill')
df.fillna(method='bfill')
# Interpolation
df.interpolate()
แนวทางเลือก
- ลบ (dropna): ข้อมูลหายไปน้อย (<5%), ไม่มี pattern, ไม่สำคัญ
- เติม (fillna/interpolate): ข้อมูลหายไปมาก, มี pattern, ต้องการเก็บ sample size
- Model-based imputation: ใช้ ML ทำนายค่าหายไป (KNN, MICE, etc.)