df.count() ผมใช้นับจำนวนค่าที่ “มีข้อมูลจริง” ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไปให้อัตโนมัติ ถ้าใครคุ้นกับ COUNTA ใน Excel ที่นับเฉพาะช่องที่มีข้อมูล บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ
Series
df.count() คืนค่าเป็น Series ครับ โดย index คือชื่อคอลัมน์ (หรือเลขแถวถ้าใช้ axis=1) และค่าคือจำนวนช่องที่ไม่ว่างของแต่ละคอลัมน์/แถว เอาไปอ่านต่อหรือเทียบกับ len(df) ได้เลย
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| [axis]ไม่บังคับ | int | str | เลือกทิศทางการนับ ค่าเริ่มต้น 0 (หรือ ‘index’) คือนับแยกตามแต่ละคอลัมน์ ถ้าใส่ 1 (หรือ ‘columns’) จะนับแยกตามแต่ละแถวแทน ส่วนใหญ่ผมใช้ค่า default ครับ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
เวลาผมเจอโค้ด pandas ที่ AI เขียนมาแล้วมี df.count() โผล่มา อย่าเพิ่งงงครับ มันคือคำสั่งง่ายๆ ที่ตอบคำถามว่า “แต่ละคอลัมน์มีข้อมูลจริงกี่ช่อง”
หัวใจของมันคือคำว่า non-null — มันจะนับเฉพาะช่องที่มีค่าจริง แล้วข้ามช่องที่เป็นค่าว่าง (NaN, None, NaT) ไปเลย ไม่นับ ตรงนี้แหละที่เหมือน COUNTA ใน Excel เป๊ะ ที่นับเฉพาะเซลล์ที่มีข้อมูล ข้ามเซลล์ว่างให้อัตโนมัติ
ที่ผมว่าเจ๋งคือมันบอกใบ้เรื่องข้อมูลหายได้ทันที สมมติตารางมี 100 แถว แต่ count คอลัมน์เบอร์โทรได้แค่ 80 ก็รู้เลยว่ามีคนไม่ได้กรอกเบอร์อยู่ 20 คน เอาไปเทียบกับจำนวนแถวทั้งหมด (len(df)) ก็เห็นช่องโหว่ของข้อมูลได้ในบรรทัดเดียว
ส่วนตัวผมใช้ตัวนี้เป็นด่านแรกๆ ทุกครั้งที่เปิดข้อมูลใหม่ — เรียก df.count() ดูปุ๊บ รู้เลยว่าคอลัมน์ไหนข้อมูลครบ คอลัมน์ไหนโหว่ ก่อนจะลงมือวิเคราะห์อะไรต่อครับ 😎
ตารางผมมี 4 แถว แต่พอเรียก df.count() จะเห็นว่าคอลัมน์ name นับได้ครบ 4 ส่วน phone ได้ 3 (เพราะ Boy ไม่ได้กรอก เป็น None) และ email ได้แค่ 2 (Cat กับ Dao ปล่อยว่าง) เห็นไหมครับว่ามันข้ามช่องว่างให้อัตโนมัติ เหมือน COUNTA ใน Excel เลย
ถ้าผมสนใจแค่คอลัมน์เดียว ก็เลือกคอลัมน์นั้นมาก่อนแล้วค่อย .count() ตรงนี้คอลัมน์ score มี NaN อยู่ 2 ช่อง (Boy กับ Dao) เลยนับได้ 2 ครับ คราวนี้ผลที่ได้เป็นตัวเลขตัวเดียว ไม่ใช่ตารางแล้ว
พอใส่ axis=1 ผมสลับมานับตามแนวนอน คือดูว่าแต่ละแถว (แต่ละคน) กรอกข้อมูลครบกี่ช่อง Ann กรอกครบทั้ง 3 ช่อง, Boy กรอกแค่ name ช่องเดียว (phone กับ email ว่าง) ได้ 1, ส่วน Cat กรอก name กับ phone ได้ 2 ครับ เทคนิคนี้ผมใช้หาแถวที่ข้อมูลโหว่บ่อยๆ
ต่างกันตรงนี้ครับ len(df) บอกจำนวนแถวทั้งหมดของตาราง รวมแถวที่มีช่องว่างด้วย ส่วน df.count() นับเฉพาะช่องที่มีค่าจริงในแต่ละคอลัมน์ ข้าม NaN ไป ผมชอบเอาสองตัวนี้มาเทียบกัน เช่น len(df) ได้ 100 แต่ count คอลัมน์หนึ่งได้ 80 ก็รู้ทันทีว่าคอลัมน์นั้นข้อมูลหายไป 20 ช่องครับ
นับครับ! ตรงนี้คนพลาดกันบ่อย df.count() มองแค่ว่า "ว่าง (NaN/None) หรือไม่ว่าง" เท่านั้น เลข 0 ก็ถือว่าเป็นค่าจริง string ว่าง '' ก็ถือว่ามีข้อมูล (แค่เป็นข้อความว่าง) ทั้งคู่ถูกนับหมด ถ้าผมอยากกรองพวกนี้ออกด้วย ต้องเคลียร์ข้อมูลก่อน หรือแปลง '' ให้เป็น NaN ก่อนนับครับ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas count จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ
df.sum() ผมใช้รวมค่าตัวเลขใน DataFrame ครับ ถ้าใครคุ้นกับ SUM ใน Excel ตัวนี้คือ SUM นั่นแหละ แต่ของแถมคือมันลากรวมให้ทุกคอลัมน์พร้อมกันในคำสั่งเดียว ไม่ต้องลากสูตรทีละช่อง
dropna ใน pandas ผมใช้สำหรับกำจัดแถวหรือคอลัมน์ที่มีค่า NaN ออกจาก DataFrame ครับ เหมาะมากสำหรับขั้นตอนทำความสะอาดข้อมูลก่อนวิเคราะห์ เพราะค่า NaN แฝงอยู่ในข้อมูลจริงแทบทุกชุด
isna ใน pandas ผมใช้สำหรับเช็คว่าแต่ละช่องใน DataFrame มีค่าว่าง (NaN) อยู่หรือเปล่า คืนผลเป็น True/False ทุกช่อง เหมือน ISBLANK ใน Excel เลยครับ แต่ทำได้กับทั้งตารางพร้อมกันในคำสั่งเดียว
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่