df.sum() ผมใช้รวมค่าตัวเลขใน DataFrame ครับ ถ้าใครคุ้นกับ SUM ใน Excel ตัวนี้คือ SUM นั่นแหละ แต่ของแถมคือมันลากรวมให้ทุกคอลัมน์พร้อมกันในคำสั่งเดียว ไม่ต้องลากสูตรทีละช่อง
df.sum(axis)
df.sum(axis)
Series
เรียก df.sum() บน DataFrame ตัวเลข จะคืนเป็น Series ครับ — index คือชื่อคอลัมน์ ค่าคือผลรวมของคอลัมน์นั้นๆ ถ้าอยากได้ผลรวมก้อนเดียวให้เลือกคอลัมน์เดียวก่อน (df['col'].sum()) จะได้เป็นตัวเลขแทน
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| axis | int | str | Optional | 0 | ทิศทางที่จะรวมค่า axis=0 (default) รวมลงในแต่ละคอลัมน์ ส่วน axis=1 รวมขวางในแต่ละแถว จำง่ายๆ ว่า 0 = แนวตั้ง, 1 = แนวนอนครับ |
df.sum()df.sum()
jan 450
feb 400
dtype: int64
df.sum(axis=1)df.sum(axis=1)
0 220
1 280
2 350
dtype: int64
df['jan'].sum()df['jan'].sum()
450
ไม่พังครับ สบายใจได้ โดย default pandas จะข้าม NaN ให้อัตโนมัติ (เหมือน skipna=True) แปลว่ามันรวมเฉพาะตัวเลขที่มีจริง ไม่เหมือน Excel ที่บางทีเจอ #VALUE! ครับ แต่ถ้าผมอยากให้ NaN ทำให้ผลรวมเป็น NaN ไปเลย ก็สั่ง df.sum(skipna=False) ได้
ผมจำแบบนี้ครับ axis=0 คือทิศที่วิ่ง ‘ลง’ ตามแถว (รวมเลยได้ผลรวมของแต่ละคอลัมน์) ส่วน axis=1 วิ่ง ‘ขวาง’ ตามคอลัมน์ (ได้ผลรวมของแต่ละแถว) ท่องสั้นๆ ว่า 0=ลง 1=ขวาง เดี๋ยวก็ติดเองครับ
ถ้าให้ผมจัดอันดับฟังก์ชัน pandas ที่มือใหม่สาย Excel ต้องรู้จักก่อนใคร sum() ต้องมาเป็นต้นๆ ครับ เพราะมันคือ SUM ที่เราใช้กันจนชินมือนั่นเอง 😎
ความต่างอยู่ที่ขอบเขตการทำงาน ใน Excel เราเขียน =SUM(B2:B100) ทีละคอลัมน์แล้วลากไปเรื่อยๆ แต่ใน pandas พอเรียก df.sum() ครั้งเดียว pandas จะรวมทุกคอลัมน์ตัวเลขให้พร้อมกัน ได้ผลกลับมาเป็น Series ที่ index คือชื่อคอลัมน์ และค่าคือผลรวมของคอลัมน์นั้นๆ ครับ
ที่เจ๋งคือพระเอกของเรื่องนี้คือ argument ชื่อ axis ครับ ค่า default คือ axis=0 = รวมลงในแนวตั้ง (รวมแต่ละคอลัมน์) แต่ถ้าเปลี่ยนเป็น axis=1 จะกลายเป็นรวมในแนวนอน (รวมแต่ละแถว) เหมือนเราหาผลรวมรายบรรทัดใน Excel เลย จำง่ายๆ ว่า 0 = ลง, 1 = ขวาง ✨
ส่วนตัวผมเวลาเจอข้อมูลยอดขายหลายเดือนหลายสาขา ผมใช้ df.sum() รวมยอดทุกเดือน แล้ว df.sum(axis=1) รวมยอดแต่ละสาขา จบในสองบรรทัด ไม่ต้องนั่งลากสูตรให้เมื่อยมือครับ