Thep Excel

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

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

df.mean(axis, numeric_only)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.mean(axis, numeric_only)

คืนค่า (Returns)
Series

คืน Series ที่มี index เป็นชื่อคอลัมน์ และ value เป็นค่าเฉลี่ยของแต่ละคอลัมน์ครับ ถ้าต้องการนำค่าเฉลี่ยไปใช้งานต่อก็ index ชื่อคอลัมน์ได้เลย เช่น result['score']

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

Examples

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

df.mean()

Result:

score 81.25
bonus 7.50
dtype: float64

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

df['score'].mean()

Result:

81.25

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

df.mean(numeric_only=True)

Result:

score 80.000000
bonus 7.666667
dtype: float64

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

df.mean(axis=1)

Result:

0 81.666667
1 85.000000
2 83.333333
dtype: float64

FAQs

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

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

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

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

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

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

Resources & Related

Additional Notes

ใน Excel เวลาอยากหาค่าเฉลี่ยของคอลัมน์นึง เราก็พิมพ์ =AVERAGE(B2:B100) ครับ pandas ทำแบบเดียวกันได้ แต่เจ๋งกว่าตรงที่เรียก .mean() ครั้งเดียวแล้วได้ค่าเฉลี่ยของทุกคอลัมน์ตัวเลขในตารางออกมาพร้อมกันเป็น Series เลย ไม่ต้องทำทีละคอลัมน์

ที่เจ๋งคือ .mean() เป็นหนึ่งในตระกูล aggregation method ที่ pandas มีให้ครบ ได้แก่ .sum() (ผลรวม), .count() (นับแถว), .max() (ค่าสูงสุด), .min() (ค่าต่ำสุด) ทุกตัวใช้วิธีเดียวกันเป๊ะ จำแค่ชื่อเปลี่ยนก็ใช้ได้ครบเลยครับ

ส่วนตัวผมจะจำง่ายๆ ว่า ถ้าอยากได้ค่าเฉลี่ยทั้งตาราง → df.mean(numeric_only=True), ถ้าอยากได้คอลัมน์เดียว → df[‘col’].mean(), ถ้าอยากเฉลี่ยตามแถว (เทียบกันข้ามคอลัมน์) → df.mean(axis=1) ครับ 😎

Leave a Reply

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