บทความนี้สาธิตวิธีจัดกลุ่มและเรียงลำดับ Pandas DataFrame ตามขนาดกลุ่ม ทั้งแบบ Ascending และ Descending
โค้ดตัวอย่างสมบูรณ์
import pandas as pd
# สร้าง DataFrame
dataFrame = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
"Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
})
print("DataFrame ต้นฉบับ:")
print(dataFrame)
# 1. เรียงจากน้อยไปมาก (Ascending)
asc_result = dataFrame.groupby('Reg_Price').size().sort_values(ascending=True)
print("\nAscending (น้อยไปมาก):")
print(asc_result)
# 2. เรียงจากมากไปน้อย (Descending)
desc_result = dataFrame.groupby('Reg_Price').size().sort_values(ascending=False)
print("\nDescending (มากไปน้อย):")
print(desc_result)
ผลลัพธ์
DataFrame ต้นฉบับ:
Car Reg_Price
0 BMW 1000
1 Lexus 1400
2 Audi 1000
3 Mercedes 900
4 Jaguar 1700
5 Bentley 900
Ascending (น้อยไปมาก):
Reg_Price
1400 1
1700 1
900 2
1000 2
dtype: int64
Descending (มากไปน้อย):
Reg_Price
1000 2
900 2
1700 1
1400 1
dtype: int64
การใช้งาน .agg() สำหรับสถิติหลายตัว
# คำนวณสถิติหลายตัวพร้อมกัน
stats = dataFrame.groupby('Reg_Price').agg(
count=('Car', 'size'),
mean_price=('Reg_Price', 'mean'),
min_price=('Reg_Price', 'min'),
max_price=('Reg_Price', 'max')
).sort_values('count', ascending=False)
print(stats)
การประยุกต์ใช้
- Ascending: หากลุ่มที่มีข้อมูลน้อย (Rare classes, Outliers)
- Descending: หากลุ่มหลัก (Majority classes), Top-K Analysis
- การตรวจสอบ Class Imbalance ใน ML
- การวิเคราะห์ความถี่เหตุการณ์ (Event Frequency Analysis)
Tip: ใช้ value_counts() แทนได้
# สั้นกว่าและเร็วกว่าสำหรับ Column เดียว
counts = dataFrame['Reg_Price'].value_counts()
print(counts) # Descending โดย Default
print(counts.sort_index()) # เรียงตาม Index (Price)