df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ
df.describe()
df.describe()
DataFrame
คืนเป็น DataFrame ที่มี index เป็นชื่อสถิติ (count, mean, std, …) และ columns เหมือน DataFrame ต้นฉบับครับ เอาไปต่อกับ .loc หรือ .T ได้เลย
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| percentiles | list | None | Optional | [.25, .5, .75] | ระบุ percentile ที่ต้องการในผลลัพธ์ เช่น [0.1, 0.5, 0.9] ได้ 10th, 50th, 90th percentile แทน default |
| include | str | list | None | Optional | None | ระบุชนิดคอลัมน์ที่รวม None=เฉพาะตัวเลข, ‘all’=ทุกคอลัมน์รวมข้อความ, [np.number]=เฉพาะตัวเลข |
| exclude | str | list | None | Optional | None | ระบุชนิดคอลัมน์ที่ต้องการข้ามไป เช่น exclude=[‘object’] เพื่อข้ามคอลัมน์ข้อความ |
df.describe()df.describe()
score age
count 5.000000 5.000000
mean 72.000000 24.400000
std 15.247951 2.302173
min 55.000000 22.000000
25% 60.000000 23.000000
50% 70.000000 24.000000
75% 85.000000 25.000000
max 90.000000 28.000000
df.describe(percentiles=[0.1, 0.5, 0.9])df.describe(percentiles=[0.1, 0.5, 0.9])
score age
count 5.000000 5.000000
mean 72.000000 24.400000
std 15.247951 2.302173
min 55.000000 22.000000
10% 57.000000 22.400000
50% 70.000000 24.000000
90% 88.000000 26.800000
max 90.000000 28.000000
df['score'].describe()df['score'].describe()
count 5.000000
mean 72.000000
std 15.247951
min 55.000000
25% 60.000000
50% 70.000000
75% 85.000000
max 90.000000
Name: score, dtype: float64
ค่า default ของ describe จะดูเฉพาะคอลัมน์ตัวเลขครับ เพราะสถิติพวก mean, std ไม่มีความหมายกับข้อความ ถ้าอยากเห็นคอลัมน์ข้อความด้วยให้ใส่ include=’all’ หรือ include=[‘object’] เพิ่มเข้าไปได้เลย
ได้เลยครับ แค่เลือกคอลัมน์ก่อนแล้วค่อย describe เช่น df[‘score’].describe() จะได้สถิติของ score อย่างเดียว ผมใช้แบบนี้ตอนต้องการโฟกัสที่คอลัมน์เดียวโดยเฉพาะ
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’ เพิ่มเข้าไปได้เลยครับ