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

Python – จัดกลุ่มคอลัมน์ใน Pandas DataFrame ด้วย groupby()

บทความนี้สาธิตวิธีจัดกลุ่มข้อมูลใน 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