Thep Excel

pandas isna — เช็คว่าช่องไหนเป็นค่าว่าง (NaN)

isna ใน pandas ผมใช้สำหรับเช็คว่าแต่ละช่องใน DataFrame มีค่าว่าง (NaN) อยู่หรือเปล่า คืนผลเป็น True/False ทุกช่อง เหมือน ISBLANK ใน Excel เลยครับ แต่ทำได้กับทั้งตารางพร้อมกันในคำสั่งเดียว

df.isna()

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.isna()

คืนค่า (Returns)
DataFrame
⛓️ ต้อง chain ต่อ

คืน DataFrame ขนาดเท่าเดิมทุกช่องครับ แต่ค่าในแต่ละช่องจะเป็น True (ว่าง) หรือ False (มีค่า) — ถ้าเรียกบน Series คอลัมน์เดียวจะได้ Series ของ bool กลับมาแทน

Examples

ตัวอย่างที่ 1: เช็คทั้ง DataFrame ว่าช่องไหนว่างบ้าง
df.isna()
ผมสั่ง df.isna() เพื่อดูภาพรวมว่าทั้งตารางมีช่องว่างอยู่ที่ไหนบ้างครับ ได้ DataFrame ขนาดเท่าเดิมกลับมา ช่องไหนว่างจะเป็น True ช่องไหนมีข้อมูลจะเป็น False — เหมือนทำ ISBLANK ให้ทุกช่องพร้อมกันเลย
Python Code:

df.isna()

Result:

name score
0 False False
1 False True
2 True False

ตัวอย่างที่ 2: นับจำนวนช่องว่างแต่ละคอลัมน์ด้วย .sum()
df.isna().sum()
Pattern นี้คือที่ผมใช้บ่อยที่สุดเลยครับ — df.isna().sum() นับว่าแต่ละคอลัมน์มีค่าว่างกี่แถว ได้ออกมาเป็น Series สรุปให้เห็นภาพชัดเจนว่าคอลัมน์ไหนมีปัญหาข้อมูลหาย เหมือน COUNTBLANK ใน Excel แต่ทำทุกคอลัมน์พร้อมกันครับ
Python Code:

df.isna().sum()

Result:

name 1
age 2
score 1
dtype: int64

ตัวอย่างที่ 3: เช็คค่าว่างในคอลัมน์เดี่ยว แล้วกรองแถวที่ว่าง
df[df['name'].isna()]
ผมใช้ df['name'].isna() เพื่อเช็คเฉพาะคอลัมน์ name ว่าแถวไหนว่างบ้าง แล้วเอาผลไปกรองเป็น boolean index เพื่อดูแถวที่มีชื่อหายไปครับ วิธีนี้ผมใช้ตอนต้องการ debug หรือ inspect แถวที่มีปัญหาโดยตรง
Python Code:

df[df['name'].isna()]

Result:

name score
2 NaN 70.0

ตัวอย่างที่ 4: นับเปอร์เซ็นต์ค่าว่างแต่ละคอลัมน์
df.isna().sum() / len(df) * 100
ผมต่อยอด pattern df.isna().sum() โดยหารด้วยจำนวนแถวทั้งหมดแล้วคูณ 100 ได้เปอร์เซ็นต์ข้อมูลหายในแต่ละคอลัมน์ครับ มีประโยชน์มากตอน QC ข้อมูล — ถ้าคอลัมน์ไหน missing เกิน 50% ผมมักตัดสินใจ drop คอลัมน์นั้นทิ้งเลย
Python Code:

df.isna().sum() / len(df) * 100

Result:

name 25.0
email 50.0
score 25.0
dtype: float64

FAQs

isna กับ notna ต่างกันยังไง?

notna คือ ตรงข้ามของ isna เลยครับ ถ้า isna คืน True ตรงช่องว่าง notna ก็คืน False ตรงนั้น ผมใช้ notna ตอนอยากกรองเฉพาะแถวที่ข้อมูลครบ เช่น df[df[‘score’].notna()] จะได้แถวที่ score ไม่ว่างทุกแถวครับ สะดวกกว่าเขียน ~df[‘score’].isna() มาก

ใช้ isna เช็ค string ว่างเปล่า ('') ได้ไหม?

ไม่ได้ครับ isna เช็คเฉพาะค่า NaN และ None เท่านั้น string เปล่า ” ถือว่ามีค่า (เป็น string ความยาว 0) isna จะคืน False ให้ ถ้าอยากเช็ค string เปล่าด้วยผมต้องเขียนเพิ่มเป็น (df[‘col’].isna()) | (df[‘col’] == ”) ครับ

isna() หลังจาก groupby ใช้ได้ไหม?

ใช้ได้ครับ แต่ผมมักใช้กับ DataFrame ธรรมดามากกว่า Pattern ที่เจอบ่อยคือเช็ค missing ก่อน groupby เพื่อให้รู้ว่าค่า NaN จะไปอยู่กลุ่มไหน (pandas จัดกลุ่ม NaN แยกต่างหากโดย default) ถ้าไม่อยากให้ NaN ติดมาด้วยต้อง dropna ก่อน groupby ครับ

Resources & Related

Additional Notes

ก่อนที่จะวิเคราะห์ข้อมูลจริงจัง สิ่งแรกที่ผมทำเสมอคือดูว่ามีช่องไหนข้อมูลหายไปบ้างครับ และ isna คือเครื่องมือที่ผมเปิดใช้เป็นอันดับแรกเลย

หลักการทำงานของมันง่ายมาก: isna วิ่งผ่านทุกช่องใน DataFrame แล้วถามว่า “ช่องนี้ว่างไหม?” ถ้าว่าง (NaN หรือ None) ได้ True ถ้ามีค่าได้ False — คืนออกมาเป็น DataFrame ขนาดเท่าเดิมทุกช่องเลยครับ Pattern ที่ผมใช้บ่อยที่สุดคือ df.isna().sum() ซึ่งจะนับจำนวนช่องว่างในแต่ละคอลัมน์ให้ครบในทีเดียว

ที่เจ๋งคือ isna ใช้ได้ทั้งระดับ DataFrame ทั้งหมด (df.isna()) และระดับคอลัมน์เดี่ยว (df[‘col’].isna()) ทำให้กรองเฉพาะแถวที่ข้อมูลครบหรือว่างได้ยืดหยุ่นมาก 🎯

ส่วนตัวผมถือว่า df.isna().sum() เป็น “ก้าวแรก” ของ EDA (Exploratory Data Analysis) ทุกครั้งเลยครับ รู้ว่าข้อมูลขาดตรงไหนก่อน แล้วค่อยตัดสินใจว่าจะ fillna เติม หรือ dropna ทิ้ง 😎

Leave a Reply

Your email address will not be published. Required fields are marked *