---
title: pandas count — นับจำนวนค่าที่ไม่ใช่ค่าว่าง (non-null) ในแต่ละคอลัมน์
url: https://www.thepexcel.com/functions/python/aggregation/pandas-count/
type: function-explainer
program: Python
syntax: df.count(axis)
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 2
  usefulness: 5
---

# pandas count — นับจำนวนค่าที่ไม่ใช่ค่าว่าง (non-null) ในแต่ละคอลัมน์

> df.count() ผมใช้นับจำนวนค่าที่ "มีข้อมูลจริง" ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไป

## คำอธิบาย

df.count() ผมใช้นับจำนวนค่าที่ "มีข้อมูลจริง" ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไปให้อัตโนมัติ ถ้าใครคุ้นกับ COUNTA ใน Excel ที่นับเฉพาะช่องที่มีข้อมูล บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ

## Syntax

```excel
df.count(axis)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| axis | No | int \| str | 0 | เลือกทิศทางการนับ ค่าเริ่มต้น 0 (หรือ 'index') คือนับแยกตามแต่ละคอลัมน์ ถ้าใส่ 1 (หรือ 'columns') จะนับแยกตามแต่ละแถวแทน ส่วนใหญ่ผมใช้ค่า default ครับ |

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: นับข้อมูลที่ไม่ว่างในแต่ละคอลัมน์ (เห็นว่ามันข้าม NaN)

```excel
df.count()
```

**ผลลัพธ์:** `name     4
phone    3
email    2
dtype: int64`

ตารางผมมี 4 แถว แต่พอเรียก df.count() จะเห็นว่าคอลัมน์ name นับได้ครบ 4 ส่วน phone ได้ 3 (เพราะ Boy ไม่ได้กรอก เป็น None) และ email ได้แค่ 2 (Cat กับ Dao ปล่อยว่าง) เห็นไหมครับว่ามันข้ามช่องว่างให้อัตโนมัติ เหมือน COUNTA ใน Excel เลย

### 2. ตัวอย่างที่ 2: นับเฉพาะคอลัมน์เดียว

```excel
df['score'].count()
```

**ผลลัพธ์:** `2`

ถ้าผมสนใจแค่คอลัมน์เดียว ก็เลือกคอลัมน์นั้นมาก่อนแล้วค่อย .count() ตรงนี้คอลัมน์ score มี NaN อยู่ 2 ช่อง (Boy กับ Dao) เลยนับได้ 2 ครับ คราวนี้ผลที่ได้เป็นตัวเลขตัวเดียว ไม่ใช่ตารางแล้ว

### 3. ตัวอย่างที่ 3: นับตามแถวด้วย axis=1 (ดูว่าแต่ละแถวกรอกครบกี่ช่อง)

```excel
df.count(axis=1)
```

**ผลลัพธ์:** `0    3
1    1
2    2
dtype: int64`

พอใส่ axis=1 ผมสลับมานับตามแนวนอน คือดูว่าแต่ละแถว (แต่ละคน) กรอกข้อมูลครบกี่ช่อง Ann กรอกครบทั้ง 3 ช่อง, Boy กรอกแค่ name ช่องเดียว (phone กับ email ว่าง) ได้ 1, ส่วน Cat กรอก name กับ phone ได้ 2 ครับ เทคนิคนี้ผมใช้หาแถวที่ข้อมูลโหว่บ่อยๆ

## หมายเหตุเพิ่มเติม

- 💡 ผมชอบใช้ df.count() คู่กับ len(df) เป็นด่านตรวจข้อมูลหาย — เอา count ของแต่ละคอลัมน์ไปลบกับจำนวนแถวทั้งหมด เห็นช่องโหว่ของข้อมูลได้ในบรรทัดเดียวเลยครับ

- ถ้าอยากนับ "จำนวนช่องที่ว่าง" แทนที่จะนับช่องที่มีข้อมูล ให้ใช้ df.isna().sum() แทนครับ มันคือมุมกลับของ count พอดี อันนึงนับช่องที่มี อีกอันนับช่องที่หาย

## คำถามที่พบบ่อย

**Q: df.count() ต่างจาก len(df) ยังไง?**

ต่างกันตรงนี้ครับ len(df) บอกจำนวนแถวทั้งหมดของตาราง รวมแถวที่มีช่องว่างด้วย ส่วน df.count() นับเฉพาะช่องที่มีค่าจริงในแต่ละคอลัมน์ ข้าม NaN ไป ผมชอบเอาสองตัวนี้มาเทียบกัน เช่น len(df) ได้ 100 แต่ count คอลัมน์หนึ่งได้ 80 ก็รู้ทันทีว่าคอลัมน์นั้นข้อมูลหายไป 20 ช่องครับ

**Q: มันนับค่า 0 หรือ string ว่าง '' ด้วยไหม?**

นับครับ! ตรงนี้คนพลาดกันบ่อย df.count() มองแค่ว่า "ว่าง (NaN/None) หรือไม่ว่าง" เท่านั้น เลข 0 ก็ถือว่าเป็นค่าจริง string ว่าง '' ก็ถือว่ามีข้อมูล (แค่เป็นข้อความว่าง) ทั้งคู่ถูกนับหมด ถ้าผมอยากกรองพวกนี้ออกด้วย ต้องเคลียร์ข้อมูลก่อน หรือแปลง '' ให้เป็น NaN ก่อนนับครับ

## แหล่งข้อมูลเพิ่มเติม

- [pandas.DataFrame.count (official docs)](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.count.html) _(article)_

---

_Source: [https://www.thepexcel.com/functions/python/aggregation/pandas-count/](https://www.thepexcel.com/functions/python/aggregation/pandas-count/)_
