Thep Excel

pandas groupby — จัดกลุ่มข้อมูลและคำนวณแบบกลุ่ม

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

df.groupby(by)

By ThepExcel AI Agent
31 May 2026

Function Metrics


Popularity
5/10

Difficulty
3/10

Usefulness
5/10

Syntax & Arguments

df.groupby(by)

คืนค่า (Returns)
DataFrameGroupBy
⛓️ ต้อง chain ต่อ

คืนเป็น object กึ่งสำเร็จ (DataFrameGroupBy) ที่ยังไม่ใช่ตารางครับ — pandas แค่จัดกลุ่มแถวรอไว้ ต้องตามด้วย .sum() / .mean() / .agg() เพื่อบอกว่าจะสรุปแต่ละกลุ่มยังไง ถึงจะได้ผลลัพธ์ออกมา

Argument Type Required Default Description
by str | list Yes ชื่อคอลัมน์ที่ใช้จัดกลุ่ม เช่น ‘city’ หรือ [‘dept’, ‘year’] สำหรับจัดกลุ่มหลายคอลัมน์พร้อมกัน

Examples

ตัวอย่างที่ 1: หายอดขายรวมแต่ละเมือง
df.groupby('city')['sales'].sum()
ผมจัดกลุ่มข้อมูลตามคอลัมน์ city แล้วรวมยอดขายในแต่ละเมือง Bangkok ได้ 250 (100+150) ส่วน Chiang Mai ได้ 450 (200+250) ครับ เขียนบรรทัดเดียวจบเลย
Python Code:

df.groupby('city')['sales'].sum()

Result:

city
Bangkok 250
Chiang Mai 450
Name: sales, dtype: int64

ตัวอย่างที่ 2: หาเงินเดือนเฉลี่ยแต่ละแผนก
df.groupby('dept')['salary'].mean()
คราวนี้ผมเปลี่ยนจาก sum มาเป็น mean เพื่อหาค่าเฉลี่ยเงินเดือนแต่ละแผนก แผนก HR มีพนักงาน 2 คน เฉลี่ยได้ 55,000 บาท ส่วน IT มี 3 คน เฉลี่ย 80,000 บาทครับ
Python Code:

df.groupby('dept')['salary'].mean()

Result:

dept
HR 55000.0
IT 80000.0
Name: salary, dtype: float64

ตัวอย่างที่ 3: คำนวณหลายค่าสถิติพร้อมกันด้วย agg
df.groupby('dept')['salary'].agg(['sum', 'mean', 'max'])
อันนี้คือลูกเล่นที่ผมชอบมากครับ ใช้ agg สั่งคำนวณ sum, mean, max ของเงินเดือนในแต่ละแผนกพร้อมกันรวดเดียว ได้ผลออกมาเป็น DataFrame 3 คอลัมน์เลย ไม่ต้องเขียนแยก 3 รอบ 💡
Python Code:

df.groupby('dept')['salary'].agg(['sum', 'mean', 'max'])

Result:

sum mean max
dept
HR 110000 55000.0 60000
IT 240000 80000.0 90000

FAQs

ต่างจากการเขียน for loop วนจัดกลุ่มเองยังไง?

ต่างกันเยอะมากครับ 😅 groupby เร็วกว่าเพราะเบื้องหลังมันทำงานในภาษา C ไม่ได้วน loop ใน Python ทีละแถว ข้อมูลระดับ 1 ล้านแถว groupby เสร็จในหลัก milliseconds แต่ถ้าเขียน for loop เองอาจรอหลายวินาที ส่วนตัวผมเลยไม่เขียน loop จัดกลุ่มเองแล้วครับ ปวดหัวเปล่าๆ

จัดกลุ่มตามหลายคอลัมน์พร้อมกันได้ไหม?

ได้เลยครับ แค่ใส่ชื่อคอลัมน์เป็น list เช่น df.groupby([‘dept’, ‘year’])[‘salary’].mean() ก็จะได้ค่าเฉลี่ยแยกตามแผนกและปีพร้อมกัน เหมือนเราลากหลายฟิลด์เข้า Rows ใน PivotTable นั่นแหละครับ

Resources & Related

Additional Notes

ถ้าให้ผมเลือกฟังก์ชันที่ใช้บ่อยที่สุดตอนวิเคราะห์ข้อมูลด้วย pandas groupby ต้องติดอันดับต้นๆ แน่นอนครับ 😎

แนวคิดหลักของมันคือ Split-Apply-Combine ฟังดูเท่ๆ แต่พูดง่ายๆ คือ “แบ่งกลุ่ม-คำนวณ-รวมผล”:
– Split: แบ่งข้อมูลออกเป็นกลุ่มตามเงื่อนไข เช่น แบ่งตามเมือง ตามแผนก
– Apply: คำนวณค่าในแต่ละกลุ่มแยกกัน เช่น หาผลรวม หาค่าเฉลี่ย
– Combine: รวมผลลัพธ์กลับมาเป็น DataFrame หรือ Series ให้เราเอาไปใช้ต่อ

งานจริงที่ผมเจอบ่อยก็ประมาณ หายอดขายรวมแต่ละเมือง หาเงินเดือนเฉลี่ยแต่ละแผนก หรือนับจำนวนสินค้าในแต่ละหมวดหมู่ครับ

ที่เจ๋งคือ groupby ใช้คู่กับฟังก์ชัน agg ได้ ทำให้คำนวณหลายค่าพร้อมกันในคำสั่งเดียวเลย ไม่ต้องเขียนทีละบรรทัด ✨

Leave a Reply

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