DataFrame
คืนเป็น DataFrame พร้อมใช้งานครับ — นำไปกรอง จัดกลุ่ม คำนวณ หรือ export ต่อได้เลย ไม่ต้อง chain เพิ่ม
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| [data]ไม่บังคับ | dict | list | ndarray | DataFrame | ข้อมูลต้นทางสำหรับสร้างตาราง รับได้หลายรูปแบบ — dict ของ list (แต่ละ key = คอลัมน์), list of lists (แต่ละ list = แถว), list of dicts, numpy array หรือ DataFrame อื่น |
| [index]ไม่บังคับ | list | Index | ระบุชื่อหรือค่าสำหรับ index แถว (เทียบได้กับชื่อแถวใน Excel) ถ้าไม่ระบุจะใช้เลข 0, 1, 2, … อัตโนมัติ |
| [columns]ไม่บังคับ | list | Index | ระบุชื่อคอลัมน์ ใช้กำหนดชื่อเมื่อ data เป็น list-of-lists หรือเรียงลำดับคอลัมน์ใหม่เมื่อ data เป็น dict |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
DataFrame คือ “ตาราง” ใน Python ครับ — มีแถว มีคอลัมน์ มี header เหมือน Excel ทุกอย่าง ผมใช้มันเป็นจุดเริ่มต้นของงานวิเคราะห์ข้อมูลเกือบทุกงาน ไม่ว่าจะอ่านจากไฟล์ สร้างจากตัวเลขที่คำนวณมา หรือแปลงจากข้อมูล API
วิธีสร้าง DataFrame มีหลายแบบ แต่ที่ AI มักสร้างให้ในโค้ดบ่อยที่สุดคือแบบ dict เช่น pd.DataFrame({‘ชื่อคอลัมน์’: [ค่า, ค่า, …]}) — แต่ละ key ในตัวแปร dict จะกลายเป็นชื่อคอลัมน์ แต่ละ list ในนั้นคือค่าในคอลัมน์นั้น นึกภาพง่ายๆ ว่าหนึ่ง key = หนึ่งคอลัมน์ใน Excel ครับ
ที่เจ๋งคือ DataFrame รองรับต้นทางหลายแบบมาก ทั้ง dict, list-of-lists, list of dicts, หรือแม้แต่ numpy array — แล้วยังกำหนด index แถว (แบบกำหนดชื่อแถวใน Excel ได้) และ columns ได้เองด้วย
ส่วนตัวผม DataFrame คือหัวใจของ pandas ครับ ฟังก์ชันอื่นๆ อย่าง groupby, merge, pivot_table ทำงานบน DataFrame ทั้งหมด เรียนรู้ตัวนี้ให้แม่นก่อนเลย 😎
ผมสร้างตารางจาก dict ครับ แต่ละ key ('ชื่อ', 'แผนก', 'เงินเดือน') กลายเป็นชื่อคอลัมน์ แต่ละ list คือค่าในคอลัมน์นั้น เหมือนวาง header แล้วใส่ข้อมูลลงแต่ละคอลัมน์ใน Excel เลย วิธีนี้ผมเจอในโค้ด AI บ่อยมากครับ
คราวนี้ผมส่ง data เป็น list ของ list ครับ แต่ละ list ข้างในคือ 1 แถว (เหมือน 1 row ใน Excel) แล้วใช้ columns= บอกว่าแต่ละคอลัมน์ชื่ออะไร โค้ด AI บางตัวสร้างแบบนี้เวลาข้อมูลมาเป็นแถวๆ
ผมส่ง list ของ dict เข้าไปครับ แต่ละ dict คือ 1 แถว key ในแต่ละ dict กลายเป็นชื่อคอลัมน์อัตโนมัติ รูปแบบนี้เจอบ่อยมากตอนดึงข้อมูลจาก API ที่ส่งกลับมาเป็น JSON array ครับ
ปกติ pandas จะตั้งเลข 0, 1, 2 ให้เป็น index แถว แต่ผมใช้ index= กำหนดชื่อแถวเองได้ครับ ตัวอย่างนี้สร้างตารางยอดขายรายไตรมาส โดยชื่อแถวเป็นชื่อสินค้าแทนเลข เหมือน freeze row ซ้ายไว้เป็น label ใน Excel
เพราะอ่านง่ายที่สุดครับ เห็นชื่อคอลัมน์กับค่าคู่กันเลย ต่างจาก list-of-lists ที่ต้องนับตำแหน่งว่า index 0 คือคอลัมน์อะไร ผมแนะนำให้คุ้นกับรูปแบบ dict ก่อนเลย เพราะโค้ด AI ส่วนใหญ่สร้าง DataFrame แบบนี้ทั้งนั้นครับ
list ธรรมดาไม่มีชื่อคอลัมน์ ไม่มี index ผมต้องนับตำแหน่งเองตลอด แต่ DataFrame มีชื่อคอลัมน์ให้เรียกตรงๆ เช่น df['เงินเดือน'] แถมยังกรอง เรียงลำดับ หายอดรวม หรือ join ตารางอื่นได้ด้วยคำสั่งสั้นๆ ครับ ถ้าข้อมูลมีโครงสร้างตารางผม always ใช้ DataFrame ไม่มีข้อยกเว้น
ใช้ df.head() เพื่อดู 5 แถวแรก หรือ df ตรงๆ ใน Jupyter notebook จะแสดงตารางสวยๆ เลยครับ อีกตัวที่ผมใช้บ่อยคือ df.info() ดูชนิดข้อมูลแต่ละคอลัมน์ กับ df.describe() ดูสถิติรวมครับ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ pd.DataFrame จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
read_csv ใน pandas ผมใช้สำหรับโหลดข้อมูลจากไฟล์ CSV หรือ text ที่มีตัวคั่นเข้ามาเป็น DataFrame พร้อมใช้งาน ถ้าใครเคยเปิดไฟล์ CSV ใน Excel แล้วได้ตารางให้แก้งานต่อ read_csv ก็คือสิ่งเดียวกันเลยครับแต่สำหรับ Python
to_csv ใน pandas ผมใช้สำหรับส่งออกข้อมูลใน DataFrame ให้เป็น CSV ไม่ว่าจะเซฟเป็นไฟล์หรือแปลงเป็น string ก็ทำได้ครับ เหมือนกับการกด Save As → CSV ใน Excel แต่ทำผ่านโค้ดได้เลย
df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ
head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่