Thep Excel

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

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

>_
df.mean(axis, numeric_only)

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่าSeries

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

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

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

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) ครับ 😎

Examples

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

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

>_
df.mean()

ผลลัพธ์score 81.25
bonus 7.50
dtype: float64
ตัวอย่างที่ 2: หาค่าเฉลี่ยคอลัมน์เดียว ได้ค่าตัวเลขออกมาเลยdf['score'].mean()

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

>_
df['score'].mean()

ผลลัพธ์81.25
ตัวอย่างที่ 3: ใช้ numeric_only=True เมื่อตารางมีคอลัมน์ข้อความปนอยู่df.mean(numeric_only=True)

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

>_
df.mean(numeric_only=True)

ผลลัพธ์score 80.000000
bonus 7.666667
dtype: float64
ตัวอย่างที่ 4: เฉลี่ยตามแถวด้วย axis=1 (เปรียบค่าหลายรายการต่อคนได้เลย)df.mean(axis=1)

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

>_
df.mean(axis=1)

ผลลัพธ์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

ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas mean จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้pandas meanAggregation
Aggregation (4)
numpy mean

np.mean ใน NumPy ผมใช้สำหรับคำนวณค่าเฉลี่ยเลขคณิตของ array หรือของแต่ละแถว/คอลัมน์ใน matrix ได้ในคำสั่งเดียว เร็วกว่าเขียน sum/len เองหลายเท่า และยังรองรับข้อมูลหลายมิติได้ด้วยครับ

pandas describe

df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ

pandas groupby

groupby ใน pandas ผมใช้สำหรับจัดกลุ่มข้อมูลใน DataFrame แล้วคำนวณค่าสรุปในแต่ละกลุ่ม เช่น หาผลรวม ค่าเฉลี่ย หรือค่าสถิติต่างๆ ตามหมวดหมู่ที่กำหนด ถ้าใครเคยใช้ PivotTable ใน Excel มาก่อน บอกเลยว่าตัวนี้คือเครื่องมือสายเดียวกันเลยครับ

pandas sum

df.sum() ผมใช้รวมค่าตัวเลขใน DataFrame ครับ ถ้าใครคุ้นกับ SUM ใน Excel ตัวนี้คือ SUM นั่นแหละ แต่ของแถมคือมันลากรวมให้ทุกคอลัมน์พร้อมกันในคำสั่งเดียว ไม่ต้องลากสูตรทีละช่อง

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่