บทความนี้สาธิตวิธีจัดกลุ่มข้อมูลใน Pandas DataFrame ตามคอลัมน์ที่กำหนด และคำนวณสถิติ (เช่น ค่าเฉลี่ย) ของแต่ละกลุ่ม
โค้ดตัวอย่าง
import pandas as pd
# สร้าง DataFrame: ข้อมูลรถและราคาจดทะเบียน
dataFrame = pd.DataFrame({
"Car": ["Audi", "Lexus", "Audi", "Mercedes", "Audi", "Lexus", "Mercedes", "Lexus", "Mercedes"],
"Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
})
print("DataFrame ต้นฉบับ:")
print(dataFrame)
# จัดกลุ่มตามคอลัมน์ Car
res = dataFrame.groupby("Car")
# คำนวณค่าเฉลี่ย Reg_Price ของแต่ละยี่ห้อ
mean_prices = res.mean()
print("\nค่าเฉลี่ยราคาจดทะเบียน 그룹ตามยี่ห้อรถ:")
print(mean_prices)
ผลลัพธ์
DataFrame ต้นฉบับ:
Car Reg_Price
0 Audi 1000
1 Lexus 1400
2 Audi 1100
3 Mercedes 900
4 Audi 1700
5 Lexus 1800
6 Mercedes 1300
7 Lexus 1150
8 Mercedes 1350
ค่าเฉลี่ยราคาจดทะเบียน 그룹ตามยี่ห้อรถ:
Reg_Price
Car
Audi 1266.666667
Lexus 1450.000000
Mercedes 1183.333333
ฟังก์ชันสถิติอื่นๆ ที่ใช้กับ GroupBy ได้
grouped = dataFrame.groupby("Car")["Reg_Price"]
print("Count:", grouped.count())
print("Sum:", grouped.sum())
print("Mean:", grouped.mean())
print("Std:", grouped.std())
print("Min:", grouped.min())
print("Max:", grouped.max())
print("Median:", grouped.median())
# หลายฟังก์ชันพร้อมกัน
print(grouped.agg(['count', 'mean', 'std', 'min', 'max']))
การจัดกลุ่มหลายคอลัมน์ (Multiple Columns)
# เพิ่มคอลัมน์ Year
dataFrame['Year'] = [2020, 2020, 2021, 2020, 2021, 2021, 2020, 2021, 2021]
# จัดกลุ่มตาม Car และ Year
multi_group = dataFrame.groupby(["Car", "Year"])["Reg_Price"].mean()
print(multi_group)
# ผลลัพธ์เป็น MultiIndex Series
# Car Year
# Audi 2020 1050.0
# 2021 1400.0
# Lexus 2020 1275.0
# 2021 1475.0
# Mercedes 2020 1125.0
# 2021 1325.0
Reset Index เพื่อกลับเป็น DataFrame ปกติ
result_df = dataFrame.groupby("Car")["Reg_Price"].mean().reset_index()
print(result_df)
# Car Reg_Price
# 0 Audi 1266.666667
# 1 Lexus 1450.000000
# 2 Mercedes 1183.333333