บทนำ
Pivot Table เป็นเครื่องมือสำคัญในการสรุปและวิเคราะห์ข้อมูล แบบ spreadsheet-style ใน Pandas สามารถสร้างได้ด้วยฟังก์ชัน pandas.pivot_table() ซึ่งจะคืนค่าเป็น DataFrame ทันที
ขั้นตอนการสร้าง Pivot Table
- นำเข้าไลบรารี pandas
- สร้าง DataFrame ต้นทาง
- ใช้
pd.pivot_table()โดยระบุindex(แถว),columns(คอลัมน์),values(ค่า), และaggfunc(ฟังก์ชันรวมข้อมูล)
ตัวอย่างโค้ด: Pivot Table พื้นฐาน
import pandas as pd
# สร้าง DataFrame ข้อมูลทีม
dataFrame = pd.DataFrame({
'Team ID': {0: 5, 1: 9, 2: 6, 3: 11, 4: 2, 5: 7},
'Team Name': {0: 'India', 1: 'Australia', 2: 'Bangladesh',
3: 'South Africa', 4: 'Sri Lanka', 5: 'England'},
'Team Points': {0: 95, 1: 93, 2: 42, 3: 60, 4: 80, 5: 55},
'Team Rank': {0: 'One', 1: 'Two', 2: 'Six', 3: 'Four', 4: 'Three', 5: 'Five'}
})
print("DataFrame ต้นทาง:")
print(dataFrame)
# Pivot Table แบบง่าย: ใช้ Team ID เป็น index
pivot = pd.pivot_table(dataFrame, index=["Team ID"])
print("\nPivot Table (index=Team ID):")
print(pivot)
ผลลัพธ์
DataFrame ต้นทาง:
Team ID Team Name Team Points Team Rank
0 5 India 95 One
1 9 Australia 93 Two
2 6 Bangladesh 42 Six
3 11 South Africa 60 Four
4 2 Sri Lanka 80 Three
5 7 England 55 Five
Pivot Table (index=Team ID):
Team Points
Team ID
2 80
5 95
6 42
7 55
9 93
11 60
ตัวอย่าง Pivot Table 進階 (หลายพารามิเตอร์)
# Pivot Table ที่ครบถ้วนกว่า
pivot_full = pd.pivot_table(
dataFrame,
index="Team Rank", # แถว
columns="Team Name", # คอลัมน์
values="Team Points", # ค่าที่จะรวม
aggfunc="mean", # ฟังก์ชันรวม (ค่าเฉลี่ย)
fill_value=0 # เติมค่าที่ขาดหาย
)
print(pivot_full)
พารามิเตอร์สำคัญของ pivot_table()
| พารามิเตอร์ | คำอธิบาย |
|---|---|
index | คอลัมน์ที่จะเป็นแถว (row labels) |
columns | คอลัมน์ที่จะเป็นคอลัมน์ (column labels) |
values | คอลัมน์ที่จะนำไปคำนวณ (ถ้าไม่ระบุ จะใช้คอลัมน์ตัวเลขทั้งหมด) |
aggfunc | ฟังก์ชันรวมข้อมูล: 'mean', 'sum', 'count', 'min', 'max', หรือฟังก์ชัน custom |
fill_value | ค่าที่ใช้เติมแทน NaN |
margins | True/False - เพิ่มแถว/คอลัมน์รวม (All) |
สรุป
pivot_table() ให้ความยืดหยุ่นสูงในการสรุปข้อมูลหลายมิติ เหมาะสำหรับรายงานและแดชบอร์ด สามารถรวมข้อมูลได้หลายวิธีพร้อมกันด้วยการส่ง list ของฟังก์ชันไปที่ aggfunc