---
title: pandas mean — หาค่าเฉลี่ยของข้อมูลแบบ AVERAGE ใน Excel
url: https://www.thepexcel.com/functions/python/aggregation/pandas-mean/
type: function-explainer
program: Python
syntax: "df.mean(axis, numeric_only)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

# pandas mean — หาค่าเฉลี่ยของข้อมูลแบบ AVERAGE ใน Excel

> df.mean() ใน pandas ผมใช้หาค่าเฉลี่ยของแต่ละคอลัมน์ใน DataFrame ทีละรอบเดียว เหมือนกับพิมพ์ AVERAGE

## คำอธิบาย

df.mean() ใน pandas ผมใช้หาค่าเฉลี่ยของแต่ละคอลัมน์ใน DataFrame ทีละรอบเดียว เหมือนกับพิมพ์ AVERAGE ทุกคอลัมน์พร้อมกันเลยครับ ถ้าต้องการแค่คอลัมน์เดียวก็ใช้ df['col'].mean() ได้ค่าตัวเลขออกมาเลย

## Syntax

```excel
df.mean(axis, numeric_only)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| axis | No | int \| str | 0 | ทิศทางการคำนวณ: 0 หรือ 'index' = คำนวณตามคอลัมน์ (เฉลี่ยแต่ละคอลัมน์), 1 หรือ 'columns' = คำนวณตามแถว (เฉลี่ยแต่ละแถวข้ามคอลัมน์) |
| numeric_only | No | bool | False | ถ้า True จะคำนวณเฉพาะคอลัมน์ตัวเลข ข้ามคอลัมน์ข้อความไปเลย ผมแนะนำให้ใส่ True เสมอเมื่อตารางมีคอลัมน์ผสมครับ |

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: หาค่าเฉลี่ยทุกคอลัมน์พร้อมกัน (เหมือน AVERAGE ทีละคอลัมน์รวดเดียว)

```excel
df.mean()
```

**ผลลัพธ์:** `score    81.25
bonus     7.50
dtype: float64`

ผมเรียก df.mean() ครั้งเดียวแต่ได้ค่าเฉลี่ยของทั้ง score และ bonus ออกมาพร้อมกันเป็น Series ครับ ไม่ต้องพิมพ์ AVERAGE ทีละคอลัมน์เหมือนใน Excel แล้ว

### 2. ตัวอย่างที่ 2: หาค่าเฉลี่ยคอลัมน์เดียว ได้ค่าตัวเลขออกมาเลย

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

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

เลือกเฉพาะคอลัมน์ score แล้วเรียก .mean() ได้ค่าเฉลี่ยออกมาเป็นตัวเลขเดียวเลยครับ เทียบกับ Excel คือ =AVERAGE(B2:B5) นั่นเองครับ

### 3. ตัวอย่างที่ 3: ใช้ numeric_only=True เมื่อตารางมีคอลัมน์ข้อความปนอยู่

```excel
df.mean(numeric_only=True)
```

**ผลลัพธ์:** `score    80.000000
bonus     7.666667
dtype: float64`

ตารางมีคอลัมน์ name ที่เป็นข้อความปนอยู่ครับ ถ้าเรียก df.mean() เฉยๆ อาจได้ warning ดังนั้นผมใส่ numeric_only=True เพื่อบอกว่าให้คำนวณเฉพาะคอลัมน์ตัวเลขอย่าง score และ bonus เท่านั้น ปลอดภัยกว่าครับ

### 4. ตัวอย่างที่ 4: เฉลี่ยตามแถวด้วย axis=1 (เปรียบค่าหลายรายการต่อคนได้เลย)

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

**ผลลัพธ์:** `0    81.666667
1    85.000000
2    83.333333
dtype: float64`

axis=1 บอกให้คำนวณตามแถวแทนคอลัมน์ครับ เหมาะตอนมีคะแนน q1 q2 q3 ของนักเรียนแต่ละคน แล้วอยากได้คะแนนเฉลี่ยรวมของแต่ละคน เทียบกับ Excel คือ =AVERAGE(A2:C2) แล้วลากสูตรลงทุกแถวนั่นแหละครับ

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

- 💡 ตระกูล aggregation ของ pandas ที่ใช้บ่อยได้แก่ .mean() (ค่าเฉลี่ย), .sum() (ผลรวม), .count() (นับแถวที่ไม่ใช่ NaN), .max() (ค่าสูงสุด), .min() (ค่าต่ำสุด) — ทุกตัวใช้ syntax เดียวกัน แค่เปลี่ยนชื่อ method ครับ ผมแนะนำให้จำเป็น package เดียวกันไว้เลย

- ถ้า DataFrame มีคอลัมน์ข้อความปนอยู่ด้วย ผมแนะนำใส่ numeric_only=True ทุกครั้งเพื่อหลีก FutureWarning ครับ pandas เวอร์ชันใหม่ๆ เริ่ม strict เรื่องนี้แล้ว

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

**Q: df.mean() กับ df['col'].mean() ต่างกันยังไง?**

ต่างกันที่สิ่งที่ได้กลับมาครับ df.mean() คืน Series ที่มีค่าเฉลี่ยของทุกคอลัมน์ตัวเลข ส่วน df['col'].mean() เลือกคอลัมน์เดียวก่อนแล้วค่อยหาเฉลี่ย ได้ตัวเลขออกมาเลย เหมือน =AVERAGE(ทั้งตาราง) vs =AVERAGE(คอลัมน์เดียว) ใน Excel ครับ ผมใช้แบบหลังบ่อยกว่าเมื่อต้องการค่าตัวเลขไปใช้ต่อ

**Q: ค่า NaN (ข้อมูลขาด) จะนับในการเฉลี่ยไหม?**

ไม่นับครับ pandas ข้าม NaN โดยอัตโนมัติ เหมือนกับที่ Excel AVERAGE ข้ามเซลล์ว่างให้เลย เช่น [80, NaN, 90] จะได้ค่าเฉลี่ย 85 ไม่ใช่ 56.67 ผมถือว่าเป็น default ที่ดีมากๆ ของ pandas เลยครับ ไม่ต้องกรอง NaN ออกก่อน

**Q: อยากใช้ .sum() หรือ .max() แทน ต้องเปลี่ยนอะไรบ้าง?**

แค่เปลี่ยนชื่อ method ครับ ใช้ df.sum(), df.count(), df.max(), df.min() ทุกตัวรองรับ axis และ numeric_only แบบเดียวกับ .mean() เป๊ะเลย จำแค่ว่าพวกนี้คือ "ตระกูลเดียวกัน" แล้วใช้ได้ทุกตัวครับ

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

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

---

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