DataFrame
คืนเป็น DataFrame ใหม่ที่เรียงแล้วครับ DataFrame ต้นฉบับไม่เปลี่ยน index เดิมยังอยู่ ถ้าอยากให้ index เริ่มใหม่จาก 0 ให้ใส่ ignore_index=True หรือต่อด้วย .reset_index(drop=True)
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| by | str | list | ชื่อคอลัมน์ที่ใช้เรียง เช่น ‘score’ หรือ [‘dept’, ‘score’] สำหรับเรียงตามหลายคอลัมน์ | |
| [ascending]ไม่บังคับ | bool | list | True | True=เรียงจากน้อยไปมาก, False=มากไปน้อย ถ้า by เป็น list ใส่ list ได้เช่น [True, False] เพื่อกำหนดแต่ละคอลัมน์ต่างกัน |
| [inplace]ไม่บังคับ | bool | False | ถ้า True จะแก้ไข DataFrame ต้นฉบับเลย ไม่คืน DataFrame ใหม่ ผมแนะนำให้ใช้ False แล้วเก็บในตัวแปรใหม่ครับ |
| [na_position]ไม่บังคับ | str | 'last' | ตำแหน่งของ NaN ในผลลัพธ์ ‘last’=NaN ไปอยู่ท้าย (default), ‘first’=NaN อยู่หัว |
| [ignore_index]ไม่บังคับ | bool | False | ถ้า True จะ reset index ของผลลัพธ์ให้เริ่มจาก 0 ใหม่ ไม่ต้องต่อด้วย .reset_index() แยก |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
df.sort_values() เป็นฟังก์ชันที่ผมใช้ตลอดเวลาตอนเตรียมข้อมูลเพื่อแสดงผลหรือวิเคราะห์ครับ 😎
รับชื่อคอลัมน์ (by) แล้วเรียงแถวทั้ง DataFrame ตามค่าในคอลัมน์นั้น ค่า default เรียงจากน้อยไปมาก (ascending=True) ใส่ ascending=False เพื่อกลับทิศได้ทันที และถ้าส่ง list ของคอลัมน์เข้าไปจะเรียงหลักแรกก่อน แล้ว tiebreak ด้วยคอลัมน์ถัดไป
ที่เจ๋งคือสามารถกำหนดทิศทางการเรียงของแต่ละคอลัมน์ต่างกันได้ด้วย list เช่น ascending=[True, False] เรียงคอลัมน์แรก A→Z และคอลัมน์สอง Z→A พร้อมกัน ✨
ส่วนตัวผมใช้ sort_values บ่อยมากตอนหา top N เช่น ต้องการ 5 สินค้าขายดีสุด ก็ sort แล้วต่อด้วย .head(5) จบครับ อีกกรณีคือก่อน reset_index เพื่อให้แถวเรียงสวยก่อน export
ผมเรียงตามคอลัมน์ score จากน้อยไปมากครับ ได้ Bob (60), Dan (75), Ana (85), Cara (92) ตามลำดับ index เดิมยังอยู่ครบ แค่เรียงใหม่
ใส่ ascending=False เพื่อกลับทิศครับ ได้ Cara (92), Ana (85), Dan (75), Bob (60) — ดูว่าใครได้คะแนนสูงสุดได้เลย ต่อด้วย .head(1) ก็ได้อันดับ 1 ทันที
เรียงตาม dept ก่อน (A→Z) แล้ว tiebreak ด้วย score จากมากไปน้อยครับ ในกลุ่ม HR จะได้ 75 ก่อน 60 และในกลุ่ม IT จะได้ 92 ก่อน 85 — ใช้รายงานแบบจัดกลุ่มได้เลย
มีสองวิธีครับ วิธีแรกต่อด้วย .reset_index(drop=True) เช่น df.sort_values('score').reset_index(drop=True) ใส่ drop=True เพื่อไม่ให้ index เดิมกลายเป็นคอลัมน์ใหม่ วิธีที่สองใส่ ignore_index=True ตอน sort_values เลย สั้นกว่าครับ
ค่า default คือ NaN ไปอยู่ท้ายเสมอครับ ไม่ว่าจะเรียงขึ้นหรือลง ถ้าอยากให้ NaN อยู่หัวให้ใส่ na_position='first' เพิ่มเข้าไป ผมมักปล่อย default ไว้เพราะอยากเห็นข้อมูลจริงก่อนครับ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ pandas sort_values จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
np.sort ผมใช้เรียงค่าใน array ของ numpy จากน้อยไปมาก แล้วคืน array ใหม่ที่เรียงแล้วออกมา (ของเดิมไม่ถูกแตะต้อง) ถ้าใครคุ้นกับ SORT หรือเมนู Data > Sort ใน Excel บอกเลยว่าตัวนี้คือสายเดียวกันเลยครับ
reset_index ผมใช้สำหรับเปลี่ยน index ของ DataFrame กลับมาเป็นคอลัมน์ธรรมดา แล้วเซ็ต index ใหม่เป็น 0, 1, 2, … ตามลำดับ — ส่วนใหญ่จะโผล่หลัง groupby ทุกครั้งที่อยากนำผลลัพธ์ไปใช้งานต่อครับ
set_index ใน pandas ผมใช้สำหรับตั้งคอลัมน์ใดคอลัมน์หนึ่ง (หรือหลายคอลัมน์) ให้กลายเป็น index หลักของ DataFrame เหมือนกับการกำหนดคีย์หลักให้ตาราง เพื่อให้ค้นหาข้อมูลด้วย .loc[] ได้อย่างรวดเร็วและตรงจุดครับ
head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ
df.tail(n) ผมใช้สำหรับดึงแถวท้ายสุด n แถวของ DataFrame ออกมาดูเร็วๆ ครับ เหมือนตอนเปิด Excel แล้วกด Ctrl+End เพื่อเลื่อนไปดูข้อมูลแถวล่างสุดของตาราง — มันคือคู่หูของ head ที่ดูแถวบนสุดนั่นเอง
nlargest ใน pandas ผมใช้ดึง N แถวที่ค่าในคอลัมน์ที่ระบุสูงที่สุดออกมาเลย เช่น Top 3 ลูกค้ายอดซื้อเยอะสุด ถ้าใครเคยทำ Sort มาก→น้อย ใน Excel แล้วเอา N แถวบนสุด ตัวนี้คือคำสั่งเดียวที่ทำงานนั้นให้จบครับ
nsmallest ใน pandas ผมใช้ดึง n แถวที่ค่าในคอลัมน์ที่ระบุต่ำสุดออกมา เหมือนใน Excel ที่เรา Sort จากน้อยไปมากแล้วหยิบแถวบนสุดมา n แถว (Bottom N) แต่ตัวนี้สั่งบรรทัดเดียวจบเลยครับ
df.fillna() ใน pandas ผมใช้สำหรับเติมค่า NaN ที่หายไปใน DataFrame ด้วยค่าที่กำหนด เช่น 0, ค่าเฉลี่ย หรือค่าจากแถวก่อนหน้า เป็นขั้นตอนสำคัญในการทำความสะอาดข้อมูลก่อนวิเคราะห์หรือส่งเข้า model ครับ
groupby ใน pandas ผมใช้สำหรับจัดกลุ่มข้อมูลใน DataFrame แล้วคำนวณค่าสรุปในแต่ละกลุ่ม เช่น หาผลรวม ค่าเฉลี่ย หรือค่าสถิติต่างๆ ตามหมวดหมู่ที่กำหนด ถ้าใครเคยใช้ PivotTable ใน Excel มาก่อน บอกเลยว่าตัวนี้คือเครื่องมือสายเดียวกันเลยครับ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่