pd.DataFrame คือคำสั่งสร้างตาราง 2 มิติ (แถว × คอลัมน์) ใน pandas ซึ่งผมเทียบได้กับ sheet หรือ range ใน Excel เลยครับ โค้ด Python ที่วิเคราะห์ข้อมูลแทบทุกตัวเริ่มต้นด้วยการสร้าง DataFrame นี่แหละ
pd.DataFrame(data, index, columns)
pd.DataFrame(data, index, columns)
DataFrame
คืนเป็น DataFrame พร้อมใช้งานครับ — นำไปกรอง จัดกลุ่ม คำนวณ หรือ export ต่อได้เลย ไม่ต้อง chain เพิ่ม
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| data | dict | list | ndarray | DataFrame | Optional | ข้อมูลต้นทางสำหรับสร้างตาราง รับได้หลายรูปแบบ — dict ของ list (แต่ละ key = คอลัมน์), list of lists (แต่ละ list = แถว), list of dicts, numpy array หรือ DataFrame อื่น | |
| index | list | Index | Optional | ระบุชื่อหรือค่าสำหรับ index แถว (เทียบได้กับชื่อแถวใน Excel) ถ้าไม่ระบุจะใช้เลข 0, 1, 2, … อัตโนมัติ | |
| columns | list | Index | Optional | ระบุชื่อคอลัมน์ ใช้กำหนดชื่อเมื่อ data เป็น list-of-lists หรือเรียงลำดับคอลัมน์ใหม่เมื่อ data เป็น dict |
pd.DataFrame({'ชื่อ': ['สมชาย', 'สมหญิง', 'สมศรี'], 'แผนก': ['IT', 'HR', 'IT'], 'เงินเดือน': [70000, 55000, 80000]})pd.DataFrame({'ชื่อ': ['สมชาย', 'สมหญิง', 'สมศรี'], 'แผนก': ['IT', 'HR', 'IT'], 'เงินเดือน': [70000, 55000, 80000]})
ชื่อ แผนก เงินเดือน
0 สมชาย IT 70000
1 สมหญิง HR 55000
2 สมศรี IT 80000
pd.DataFrame([[1, 'A', 100], [2, 'B', 200], [3, 'C', 300]], columns=['ID', 'ประเภท', 'ราคา'])pd.DataFrame([[1, 'A', 100], [2, 'B', 200], [3, 'C', 300]], columns=['ID', 'ประเภท', 'ราคา'])
ID ประเภท ราคา
0 1 A 100
1 2 B 200
2 3 C 300
pd.DataFrame([{'name': 'Alice', 'score': 90}, {'name': 'Bob', 'score': 85}, {'name': 'Carol', 'score': 95}])pd.DataFrame([{'name': 'Alice', 'score': 90}, {'name': 'Bob', 'score': 85}, {'name': 'Carol', 'score': 95}])
name score
0 Alice 90
1 Bob 85
2 Carol 95
pd.DataFrame({'Q1': [100, 200], 'Q2': [150, 250], 'Q3': [180, 220]}, index=['สินค้า A', 'สินค้า B'])pd.DataFrame({'Q1': [100, 200], 'Q2': [150, 250], 'Q3': [180, 220]}, index=['สินค้า A', 'สินค้า B'])
Q1 Q2 Q3
สินค้า A 100 150 180
สินค้า B 200 250 220
เพราะอ่านง่ายที่สุดครับ เห็นชื่อคอลัมน์กับค่าคู่กันเลย ต่างจาก 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() ดูสถิติรวมครับ
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 ทั้งหมด เรียนรู้ตัวนี้ให้แม่นก่อนเลย 😎