df.count() ผมใช้นับจำนวนค่าที่ “มีข้อมูลจริง” ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไปให้อัตโนมัติ ถ้าใครคุ้นกับ COUNTA ใน Excel ที่นับเฉพาะช่องที่มีข้อมูล บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ
df.count(axis)
df.count(axis)
Series
df.count() คืนค่าเป็น Series ครับ โดย index คือชื่อคอลัมน์ (หรือเลขแถวถ้าใช้ axis=1) และค่าคือจำนวนช่องที่ไม่ว่างของแต่ละคอลัมน์/แถว เอาไปอ่านต่อหรือเทียบกับ len(df) ได้เลย
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| axis | int | str | Optional | 0 | เลือกทิศทางการนับ ค่าเริ่มต้น 0 (หรือ ‘index’) คือนับแยกตามแต่ละคอลัมน์ ถ้าใส่ 1 (หรือ ‘columns’) จะนับแยกตามแต่ละแถวแทน ส่วนใหญ่ผมใช้ค่า default ครับ |
df.count()df.count()
name 4
phone 3
email 2
dtype: int64
df['score'].count()df['score'].count()
2
df.count(axis=1)df.count(axis=1)
0 3
1 1
2 2
dtype: int64
ต่างกันตรงนี้ครับ len(df) บอกจำนวนแถวทั้งหมดของตาราง รวมแถวที่มีช่องว่างด้วย ส่วน df.count() นับเฉพาะช่องที่มีค่าจริงในแต่ละคอลัมน์ ข้าม NaN ไป ผมชอบเอาสองตัวนี้มาเทียบกัน เช่น len(df) ได้ 100 แต่ count คอลัมน์หนึ่งได้ 80 ก็รู้ทันทีว่าคอลัมน์นั้นข้อมูลหายไป 20 ช่องครับ
นับครับ! ตรงนี้คนพลาดกันบ่อย df.count() มองแค่ว่า “ว่าง (NaN/None) หรือไม่ว่าง” เท่านั้น เลข 0 ก็ถือว่าเป็นค่าจริง string ว่าง ” ก็ถือว่ามีข้อมูล (แค่เป็นข้อความว่าง) ทั้งคู่ถูกนับหมด ถ้าผมอยากกรองพวกนี้ออกด้วย ต้องเคลียร์ข้อมูลก่อน หรือแปลง ” ให้เป็น NaN ก่อนนับครับ
เวลาผมเจอโค้ด pandas ที่ AI เขียนมาแล้วมี df.count() โผล่มา อย่าเพิ่งงงครับ มันคือคำสั่งง่ายๆ ที่ตอบคำถามว่า “แต่ละคอลัมน์มีข้อมูลจริงกี่ช่อง”
หัวใจของมันคือคำว่า non-null — มันจะนับเฉพาะช่องที่มีค่าจริง แล้วข้ามช่องที่เป็นค่าว่าง (NaN, None, NaT) ไปเลย ไม่นับ ตรงนี้แหละที่เหมือน COUNTA ใน Excel เป๊ะ ที่นับเฉพาะเซลล์ที่มีข้อมูล ข้ามเซลล์ว่างให้อัตโนมัติ
ที่ผมว่าเจ๋งคือมันบอกใบ้เรื่องข้อมูลหายได้ทันที สมมติตารางมี 100 แถว แต่ count คอลัมน์เบอร์โทรได้แค่ 80 ก็รู้เลยว่ามีคนไม่ได้กรอกเบอร์อยู่ 20 คน เอาไปเทียบกับจำนวนแถวทั้งหมด (len(df)) ก็เห็นช่องโหว่ของข้อมูลได้ในบรรทัดเดียว
ส่วนตัวผมใช้ตัวนี้เป็นด่านแรกๆ ทุกครั้งที่เปิดข้อมูลใหม่ — เรียก df.count() ดูปุ๊บ รู้เลยว่าคอลัมน์ไหนข้อมูลครบ คอลัมน์ไหนโหว่ ก่อนจะลงมือวิเคราะห์อะไรต่อครับ 😎