---
title: pd.DataFrame — สร้างตาราง 2 มิติหัวใจของ pandas
url: https://www.thepexcel.com/functions/python/creation/pandas-dataframe/
type: function-explainer
program: Python
syntax: "pd.DataFrame(data, index, columns)"
date: 2026-05-31
scores:
  popularity: 5
  difficulty: 3
  usefulness: 5
---

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

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

## คำอธิบาย

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

## Syntax

```excel
pd.DataFrame(data, index, columns)
```

## Arguments

| Name | Required | Type | Default | Description |
| --- | --- | --- | --- | --- |
| data | No | dict \| list \| ndarray \| DataFrame |  | ข้อมูลต้นทางสำหรับสร้างตาราง รับได้หลายรูปแบบ — dict ของ list (แต่ละ key = คอลัมน์), list of lists (แต่ละ list = แถว), list of dicts, numpy array หรือ DataFrame อื่น |
| index | No | list \| Index |  | ระบุชื่อหรือค่าสำหรับ index แถว (เทียบได้กับชื่อแถวใน Excel) ถ้าไม่ระบุจะใช้เลข 0, 1, 2, ... อัตโนมัติ |
| columns | No | list \| Index |  | ระบุชื่อคอลัมน์ ใช้กำหนดชื่อเมื่อ data เป็น list-of-lists หรือเรียงลำดับคอลัมน์ใหม่เมื่อ data เป็น dict |

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: สร้างตารางจาก dict — วิธีที่ AI ใช้บ่อยที่สุด

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

**ผลลัพธ์:** `     ชื่อ แผนก  เงินเดือน
0   สมชาย   IT      70000
1  สมหญิง   HR      55000
2   สมศรี   IT      80000`

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

### 2. ตัวอย่างที่ 2: สร้างตารางจาก list-of-lists พร้อมกำหนด columns

```excel
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`

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

### 3. ตัวอย่างที่ 3: สร้างตารางจาก list of dicts — รูปแบบ API JSON

```excel
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`

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

### 4. ตัวอย่างที่ 4: กำหนด index แถวเองแทนเลข 0,1,2

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

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

## หมายเหตุเพิ่มเติม

- 💡 เวลา AI สร้าง DataFrame ให้ในโค้ด ผมแนะนำให้รันดู df.head() หรือ df.shape ทันทีครับ เพื่อตรวจว่าจำนวนแถวและคอลัมน์ตรงกับที่คาดไว้ก่อนเอาไปคำนวณต่อ

- ถ้า list แต่ละคอลัมน์ใน dict ยาวไม่เท่ากัน pandas จะ raise ValueError ทันทีครับ เจอ error นี้ให้เช็คก่อนว่าแต่ละ list มีจำนวนสมาชิกเท่ากันไหม ผมเจอบ่อยตอน copy ข้อมูลมาจากหลายแหล่ง

## คำถามที่พบบ่อย

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

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

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

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

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

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

## แหล่งข้อมูลเพิ่มเติม

- [pandas DataFrame (official docs)](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) _(article)_

---

_Source: [https://www.thepexcel.com/functions/python/creation/pandas-dataframe/](https://www.thepexcel.com/functions/python/creation/pandas-dataframe/)_
