df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ
DataFrame
คืนเป็น DataFrame ที่มี index เป็นชื่อสถิติ (count, mean, std, …) และ columns เหมือน DataFrame ต้นฉบับครับ เอาไปต่อกับ .loc หรือ .T ได้เลย
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| [percentiles]ไม่บังคับ | list | None | [.25, .5, .75] | ระบุ percentile ที่ต้องการในผลลัพธ์ เช่น [0.1, 0.5, 0.9] ได้ 10th, 50th, 90th percentile แทน default |
| [include]ไม่บังคับ | str | list | None | None | ระบุชนิดคอลัมน์ที่รวม None=เฉพาะตัวเลข, ‘all’=ทุกคอลัมน์รวมข้อความ, [np.number]=เฉพาะตัวเลข |
| [exclude]ไม่บังคับ | str | list | None | None | ระบุชนิดคอลัมน์ที่ต้องการข้ามไป เช่น exclude=[‘object’] เพื่อข้ามคอลัมน์ข้อความ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
df.describe() คือคำสั่งแรกที่ผมรันเสมอทุกครั้งที่ได้ข้อมูลชุดใหม่มาครับ 😎
มันสรุปสถิติ 8 ค่าให้ในทีเดียว ได้แก่ count (จำนวนแถวที่ไม่ใช่ NaN), mean (ค่าเฉลี่ย), std (ส่วนเบี่ยงเบนมาตรฐาน), min, 25th percentile, median (50%), 75th percentile และ max ทำงานกับคอลัมน์ตัวเลขทุกคอลัมน์พร้อมกันโดยอัตโนมัติ ไม่ต้องระบุชื่อคอลัมน์เลย
ที่เจ๋งคือ describe ช่วยจับ outlier และ data quality issue ได้เร็วมาก เช่น ถ้า min เป็นลบแต่ข้อมูลควรเป็นบวก หรือ max สูงกว่าค่าอื่นผิดปกติ แค่กลาดตามองก็รู้แล้วว่าข้อมูลมีปัญหาตรงไหน ✨
ส่วนตัวผมใช้ describe เป็น sanity check ทุกครั้งหลัง load ข้อมูล ถ้าต้องการสถิติของคอลัมน์ข้อความด้วยก็ใส่ include=’all’ เพิ่มเข้าไปได้เลยครับ
ผมรัน describe() บน DataFrame 2 คอลัมน์ครับ ได้สถิติทั้ง count, mean, std, min, 25%, 50%, 75%, max ของทั้ง score และ age ในตารางเดียว มองเห็นภาพรวมได้เร็วมาก
คราวนี้ผมเปลี่ยน percentile เป็น 10th, 50th, 90th แทน default ครับ ใช้ดู extreme values ได้ดีกว่าในงานบางประเภท เช่น ดู top 10% กับ bottom 10%
ผมเลือก describe แค่คอลัมน์ score คอลัมน์เดียวครับ ได้ Series ของสถิติ 8 ค่า ใช้ตอนต้องการโฟกัสที่คอลัมน์เดียวโดยเฉพาะ เช่น ดูว่าคะแนนกระจายตัวแค่ไหน std ประมาณ 15.25 บอกว่ากระจายพอควร
ค่า default ของ describe จะดูเฉพาะคอลัมน์ตัวเลขครับ เพราะสถิติพวก mean, std ไม่มีความหมายกับข้อความ ถ้าอยากเห็นคอลัมน์ข้อความด้วยให้ใส่ include='all' หรือ include=['object'] เพิ่มเข้าไปได้เลย
ได้เลยครับ แค่เลือกคอลัมน์ก่อนแล้วค่อย describe เช่น df['score'].describe() จะได้สถิติของ score อย่างเดียว ผมใช้แบบนี้ตอนต้องการโฟกัสที่คอลัมน์เดียวโดยเฉพาะ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas describe จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
df.count() ผมใช้นับจำนวนค่าที่ "มีข้อมูลจริง" ในแต่ละคอลัมน์ โดยข้ามช่องที่เป็นค่าว่าง (NaN/None) ไปให้อัตโนมัติ ถ้าใครคุ้นกับ COUNTA ใน Excel ที่นับเฉพาะช่องที่มีข้อมูล บอกเลยว่าตัวนี้คือพี่น้องกันเลยครับ
groupby ใน pandas ผมใช้สำหรับจัดกลุ่มข้อมูลใน DataFrame แล้วคำนวณค่าสรุปในแต่ละกลุ่ม เช่น หาผลรวม ค่าเฉลี่ย หรือค่าสถิติต่างๆ ตามหมวดหมู่ที่กำหนด ถ้าใครเคยใช้ PivotTable ใน Excel มาก่อน บอกเลยว่าตัวนี้คือเครื่องมือสายเดียวกันเลยครับ
df.mean() ใน pandas ผมใช้หาค่าเฉลี่ยของแต่ละคอลัมน์ใน DataFrame ทีละรอบเดียว เหมือนกับพิมพ์ AVERAGE ทุกคอลัมน์พร้อมกันเลยครับ ถ้าต้องการแค่คอลัมน์เดียวก็ใช้ df['col'].mean() ได้ค่าตัวเลขออกมาเลย
nunique ใน pandas ผมใช้นับว่าในแต่ละคอลัมน์มีค่าที่ไม่ซ้ำกันกี่ตัว เหมือนกับการ Remove Duplicates ใน Excel แล้วนับจำนวนที่เหลือ หรือนับ unique ด้วย COUNTA นั่นแหละครับ เหมาะมากตอนอยากรู้ว่าข้อมูลมีกี่ลูกค้า กี่จังหวัด หรือกี่ประเภท
Series.value_counts() ใน pandas ผมใช้สำหรับนับว่าแต่ละค่าใน column ปรากฏกี่ครั้ง ได้ผลเรียงจากมากไปน้อยอัตโนมัติ ใช้ดูการกระจายของข้อมูลหรือหาค่าที่พบบ่อยสุดได้เร็วมากครับ
pd.DataFrame คือคำสั่งสร้างตาราง 2 มิติ (แถว × คอลัมน์) ใน pandas ซึ่งผมเทียบได้กับ sheet หรือ range ใน Excel เลยครับ โค้ด Python ที่วิเคราะห์ข้อมูลแทบทุกตัวเริ่มต้นด้วยการสร้าง DataFrame นี่แหละ
df.fillna() ใน pandas ผมใช้สำหรับเติมค่า NaN ที่หายไปใน DataFrame ด้วยค่าที่กำหนด เช่น 0, ค่าเฉลี่ย หรือค่าจากแถวก่อนหน้า เป็นขั้นตอนสำคัญในการทำความสะอาดข้อมูลก่อนวิเคราะห์หรือส่งเข้า model ครับ
head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ
read_csv ใน pandas ผมใช้สำหรับโหลดข้อมูลจากไฟล์ CSV หรือ text ที่มีตัวคั่นเข้ามาเป็น DataFrame พร้อมใช้งาน ถ้าใครเคยเปิดไฟล์ CSV ใน Excel แล้วได้ตารางให้แก้งานต่อ read_csv ก็คือสิ่งเดียวกันเลยครับแต่สำหรับ Python
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่