df.sum() ผมใช้รวมค่าตัวเลขใน DataFrame ครับ ถ้าใครคุ้นกับ SUM ใน Excel ตัวนี้คือ SUM นั่นแหละ แต่ของแถมคือมันลากรวมให้ทุกคอลัมน์พร้อมกันในคำสั่งเดียว ไม่ต้องลากสูตรทีละช่อง
Series
เรียก df.sum() บน DataFrame ตัวเลข จะคืนเป็น Series ครับ — index คือชื่อคอลัมน์ ค่าคือผลรวมของคอลัมน์นั้นๆ ถ้าอยากได้ผลรวมก้อนเดียวให้เลือกคอลัมน์เดียวก่อน (df['col'].sum()) จะได้เป็นตัวเลขแทน
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| [axis]ไม่บังคับ | int | str | ทิศทางที่จะรวมค่า axis=0 (default) รวมลงในแต่ละคอลัมน์ ส่วน 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) รวมยอดแต่ละสาขา จบในสองบรรทัด ไม่ต้องนั่งลากสูตรให้เมื่อยมือครับ
ผมเรียก df.sum() เฉยๆ pandas ก็รวมค่าลงในแต่ละคอลัมน์ให้เลยครับ คอลัมน์ jan ได้ 450 (100+200+150) ส่วน feb ได้ 400 (120+80+200) ผลกลับมาเป็น Series ที่ index คือชื่อคอลัมน์ เหมือนเขียน =SUM() ทีละคอลัมน์ใน Excel แต่ทำให้ทุกคอลัมน์พร้อมกันรวดเดียว
คราวนี้ผมใส่ axis=1 เข้าไป pandas จะเปลี่ยนทิศมารวมขวางในแต่ละแถวแทนครับ แถวแรกได้ 220 (100+120) แถวสองได้ 280 (200+80) แถวสามได้ 350 (150+200) เหมือนเราหาผลรวมรายบรรทัดใน Excel โดยที่ index ของผลลัพธ์คือเลขแถวเดิมครับ
ถ้าอยากได้ผลรวมของคอลัมน์เดียว ผมเลือกคอลัมน์ออกมาก่อนด้วย df['jan'] แล้วค่อยต่อ .sum() ครับ คราวนี้ได้ตัวเลขก้อนเดียวคือ 450 ไม่ใช่ Series แล้ว เพราะเรารวมแค่คอลัมน์เดียว ใกล้เคียงกับ =SUM(B2:B4) ใน Excel ที่สุดครับ
ไม่พังครับ สบายใจได้ โดย default pandas จะข้าม NaN ให้อัตโนมัติ (เหมือน skipna=True) แปลว่ามันรวมเฉพาะตัวเลขที่มีจริง ไม่เหมือน Excel ที่บางทีเจอ #VALUE! ครับ แต่ถ้าผมอยากให้ NaN ทำให้ผลรวมเป็น NaN ไปเลย ก็สั่ง df.sum(skipna=False) ได้
ผมจำแบบนี้ครับ axis=0 คือทิศที่วิ่ง 'ลง' ตามแถว (รวมเลยได้ผลรวมของแต่ละคอลัมน์) ส่วน axis=1 วิ่ง 'ขวาง' ตามคอลัมน์ (ได้ผลรวมของแต่ละแถว) ท่องสั้นๆ ว่า 0=ลง 1=ขวาง เดี๋ยวก็ติดเองครับ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas sum จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
df.count() ผมใช้นับจำนวนค่าที่ "มีข้อมูลจริง" ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไปให้อัตโนมัติ ถ้าใครคุ้นกับ COUNTA ใน Excel ที่นับเฉพาะช่องที่มีข้อมูล บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ
groupby ใน pandas ผมใช้สำหรับจัดกลุ่มข้อมูลใน DataFrame แล้วคำนวณค่าสรุปในแต่ละกลุ่ม เช่น หาผลรวม ค่าเฉลี่ย หรือค่าสถิติต่างๆ ตามหมวดหมู่ที่กำหนด ถ้าใครเคยใช้ PivotTable ใน Excel มาก่อน บอกเลยว่าตัวนี้คือเครื่องมือสายเดียวกันเลยครับ
df.mean() ใน pandas ผมใช้หาค่าเฉลี่ยของแต่ละคอลัมน์ใน DataFrame ทีละรอบเดียว เหมือนกับพิมพ์ AVERAGE ทุกคอลัมน์พร้อมกันเลยครับ ถ้าต้องการแค่คอลัมน์เดียวก็ใช้ df['col'].mean() ได้ค่าตัวเลขออกมาเลย
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่