head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ
df.head(n)
df.head(n)
DataFrame
คืน DataFrame ใหม่ที่มีแค่ n แถวแรกครับ ไม่ใช่ view ของต้นฉบับ — แก้ไขผลลัพธ์ไม่กระทบ df เดิม ใช้ chain ต่อได้เลย เช่น .head(10).reset_index()
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| n | int | Optional | 5 | จำนวนแถวที่อยากดู ถ้าไม่ใส่จะได้ 5 แถวแรกโดยอัตโนมัติ ใส่ค่าลบได้ด้วย เช่น -2 หมายถึงแสดงทุกแถวยกเว้น 2 แถวสุดท้าย |
df.head()df.head()
name score
0 Alice 85
1 Bob 92
2 Charlie 78
3 David 95
4 Eve 88
df.head(3)df.head(3)
product price
0 A 100
1 B 200
2 C 150
s.head(4)s.head(4)
0 10
1 20
2 30
3 40
Name: revenue, dtype: int64
df.sort_values('price', ascending=False).head(5)df.sort_values('price', ascending=False).head(5)
product price
1 B 450
6 G 390
3 D 300
4 E 250
5 F 180
head() ดูแถวจาก ด้านบน (แรก) ส่วน tail() ดูจาก ด้านล่าง (ท้าย) ครับ เช่น df.tail(5) จะได้ 5 แถวสุดท้าย ผมมักใช้ tail() ตอนอยากเช็กว่าข้อมูลใหม่ที่เพิ่งต่อท้ายเข้าไปถูกต้องไหม หรือดูว่าข้อมูลเรียงตามเวลาแล้วแถวล่าสุดคืออะไรครับ
ได้ครับ! df.head(-2) หมายถึงแสดงทุกแถว ยกเว้น 2 แถวสุดท้าย เช่น DataFrame มี 10 แถว head(-2) จะได้ 8 แถวแรก ผมไม่ค่อยได้ใช้ pattern นี้บ่อยนักครับ แต่รู้ไว้ก็ดี
ไม่ครับ head() เป็น method ที่ read-only คืนค่า DataFrame ใหม่ที่มีแค่แถวที่เลือก ไม่กระทบข้อมูลต้นฉบับเลย เหมือนการ filter ดูแบบ temporary ครับ
ทุกครั้งที่โหลดไฟล์ CSV หรือดึงข้อมูลจากฐานข้อมูลมา สิ่งแรกที่ผมทำเสมอคือเรียก .head() เพื่อดูว่าข้อมูลหน้าตาเป็นยังไง คอลัมน์ถูกต้องไหม ค่าสมเหตุสมผลไหม ก่อนที่จะเริ่มวิเคราะห์จริงจังครับ
โดยค่าเริ่มต้น .head() จะแสดง 5 แถวแรก แต่ถ้าอยากเห็นมากหรือน้อยกว่านั้นก็แค่ใส่ตัวเลขลงไป เช่น .head(10) หรือ .head(3) ก็ได้ครับ นอกจาก DataFrame แล้วยังใช้กับ Series ได้เช่นกัน
ที่เจ๋งคือ .head() มักใช้คู่กับ .sort_values() เพื่อดู Top-N ได้เลย เช่น เรียงจากมากไปน้อยแล้วเอาแค่ 5 อันดับแรก — pattern นี้ผมใช้บ่อยมากตอนทำรายงานครับ ✨
ส่วนตัวผมชอบ .head() มากกว่าการ print df ทั้งตาราง เพราะมันเร็วและไม่ทำให้หน้าจอล้น โดยเฉพาะตอนที่ข้อมูลมีเป็นล้านแถว 😎