Thep Excel

pd.DataFrameสร้างตาราง 2 มิติหัวใจของ pandas

pd.DataFrame คือคำสั่งสร้างตาราง 2 มิติ (แถว × คอลัมน์) ใน pandas ซึ่งผมเทียบได้กับ sheet หรือ range ใน Excel เลยครับ โค้ด Python ที่วิเคราะห์ข้อมูลแทบทุกตัวเริ่มต้นด้วยการสร้าง DataFrame นี่แหละ

>_
pd.DataFrame(data, index, columns)

ความนิยม5/10
ความยาก3/10
ประโยชน์5/10

อัปเดต 31 May 2026

Syntax & Arguments

คืนค่า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

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

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 ทั้งหมด เรียนรู้ตัวนี้ให้แม่นก่อนเลย 😎

Examples

ตัวอย่างที่ 1: สร้างตารางจาก dict — วิธีที่ AI ใช้บ่อยที่สุดpd.DataFrame({'ชื่อ': ['สมชาย', 'สมหญิง', 'สมศรี'], 'แผนก': ['IT', 'HR', 'IT'], 'เงินเดือน': [70000, 55000, 80000]})

ผมสร้างตารางจาก dict ครับ แต่ละ key ('ชื่อ', 'แผนก', 'เงินเดือน') กลายเป็นชื่อคอลัมน์ แต่ละ list คือค่าในคอลัมน์นั้น เหมือนวาง header แล้วใส่ข้อมูลลงแต่ละคอลัมน์ใน Excel เลย วิธีนี้ผมเจอในโค้ด AI บ่อยมากครับ

>_
pd.DataFrame({'ชื่อ': ['สมชาย', 'สมหญิง', 'สมศรี'], 'แผนก': ['IT', 'HR', 'IT'], 'เงินเดือน': [70000, 55000, 80000]})

ผลลัพธ์ ชื่อ แผนก เงินเดือน
0 สมชาย IT 70000
1 สมหญิง HR 55000
2 สมศรี IT 80000
ตัวอย่างที่ 2: สร้างตารางจาก list-of-lists พร้อมกำหนด columnspd.DataFrame([[1, 'A', 100], [2, 'B', 200], [3, 'C', 300]], columns=['ID', 'ประเภท', 'ราคา'])

คราวนี้ผมส่ง data เป็น list ของ list ครับ แต่ละ list ข้างในคือ 1 แถว (เหมือน 1 row ใน Excel) แล้วใช้ columns= บอกว่าแต่ละคอลัมน์ชื่ออะไร โค้ด AI บางตัวสร้างแบบนี้เวลาข้อมูลมาเป็นแถวๆ

>_
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
ตัวอย่างที่ 3: สร้างตารางจาก list of dicts — รูปแบบ API JSONpd.DataFrame([{'name': 'Alice', 'score': 90}, {'name': 'Bob', 'score': 85}, {'name': 'Carol', 'score': 95}])

ผมส่ง list ของ dict เข้าไปครับ แต่ละ dict คือ 1 แถว key ในแต่ละ dict กลายเป็นชื่อคอลัมน์อัตโนมัติ รูปแบบนี้เจอบ่อยมากตอนดึงข้อมูลจาก API ที่ส่งกลับมาเป็น JSON array ครับ

>_
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
ตัวอย่างที่ 4: กำหนด index แถวเองแทนเลข 0,1,2pd.DataFrame({'Q1': [100, 200], 'Q2': [150, 250], 'Q3': [180, 220]}, index=['สินค้า A', 'สินค้า B'])

ปกติ pandas จะตั้งเลข 0, 1, 2 ให้เป็น index แถว แต่ผมใช้ index= กำหนดชื่อแถวเองได้ครับ ตัวอย่างนี้สร้างตารางยอดขายรายไตรมาส โดยชื่อแถวเป็นชื่อสินค้าแทนเลข เหมือน freeze row ซ้ายไว้เป็น label ใน Excel

>_
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

FAQs

ทำไม AI ถึงชอบสร้าง DataFrame จาก dict มากที่สุด?+

เพราะอ่านง่ายที่สุดครับ เห็นชื่อคอลัมน์กับค่าคู่กันเลย ต่างจาก list-of-lists ที่ต้องนับตำแหน่งว่า index 0 คือคอลัมน์อะไร ผมแนะนำให้คุ้นกับรูปแบบ dict ก่อนเลย เพราะโค้ด AI ส่วนใหญ่สร้าง DataFrame แบบนี้ทั้งนั้นครับ

DataFrame ต่างจาก list ธรรมดายังไง ทำไมไม่ใช้ list แทน?+

list ธรรมดาไม่มีชื่อคอลัมน์ ไม่มี index ผมต้องนับตำแหน่งเองตลอด แต่ DataFrame มีชื่อคอลัมน์ให้เรียกตรงๆ เช่น df['เงินเดือน'] แถมยังกรอง เรียงลำดับ หายอดรวม หรือ join ตารางอื่นได้ด้วยคำสั่งสั้นๆ ครับ ถ้าข้อมูลมีโครงสร้างตารางผม always ใช้ DataFrame ไม่มีข้อยกเว้น

ถ้า AI สร้าง df = pd.DataFrame({…}) ในโค้ด แล้วผมจะดูข้อมูลข้างในยังไง?+

ใช้ df.head() เพื่อดู 5 แถวแรก หรือ df ตรงๆ ใน Jupyter notebook จะแสดงตารางสวยๆ เลยครับ อีกตัวที่ผมใช้บ่อยคือ df.info() ดูชนิดข้อมูลแต่ละคอลัมน์ กับ df.describe() ดูสถิติรวมครับ

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ pd.DataFrame จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้pd.DataFrameCreation
IO (2)
pandas read_csv

read_csv ใน pandas ผมใช้สำหรับโหลดข้อมูลจากไฟล์ CSV หรือ text ที่มีตัวคั่นเข้ามาเป็น DataFrame พร้อมใช้งาน ถ้าใครเคยเปิดไฟล์ CSV ใน Excel แล้วได้ตารางให้แก้งานต่อ read_csv ก็คือสิ่งเดียวกันเลยครับแต่สำหรับ Python

pandas to_csv

to_csv ใน pandas ผมใช้สำหรับส่งออกข้อมูลใน DataFrame ให้เป็น CSV ไม่ว่าจะเซฟเป็นไฟล์หรือแปลงเป็น string ก็ทำได้ครับ เหมือนกับการกด Save As → CSV ใน Excel แต่ทำผ่านโค้ดได้เลย

Aggregation (1)
pandas describe

df.describe() ใน pandas ผมใช้สำหรับดูสถิติพื้นฐานของข้อมูลในทุกคอลัมน์พร้อมกันในคำสั่งเดียว ทั้ง count, mean, std, min, max และ percentile ช่วยให้เข้าใจภาพรวมของชุดข้อมูลได้เร็วมากก่อนเริ่มวิเคราะห์จริงครับ

Inspection (1)
pandas head

head ใน pandas ผมใช้สำหรับดูข้อมูลแถวแรกๆ ของ DataFrame เพื่อเช็กว่าโหลดข้อมูลมาถูกต้องหรือเปล่า คล้ายกับการ scroll ไปดูบนสุดของตาราง Excel เลยครับ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่