Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – เรียงลำดับกลุ่ม Pandas DataFrame ตามขนาดกลุ่ม (Ascending & Descending)

บทความนี้สาธิตวิธีจัดกลุ่มและเรียงลำดับ 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)