Thực hiện groupby() trên DataFrame có chỉ mục đa cấp (MultiIndex). Sử dụng tham số level để chỉ định cấp độ nhóm.
Đọc CSV và tạo MultiIndex
import pandas as pd
# Giả sử file CSV có cột: Car, Place, UnitsSold
df = pd.read_csv("C:/Users/amit_/Desktop/sales.csv")
print("DataFrame gốc:\n", df)
# Đặt Car và Place làm MultiIndex
df = df.set_index(['Car', 'Place'])
df.sort_index(inplace=True) # Sắp xếp index để groupby level hoạt động đúng
print("\nMultiIndex DataFrame:\n", df)
Groupby trên cấp độ 'Car'
# Nhóm theo cấp 'Car' (cấp 0 của MultiIndex), tính trung bình UnitsSold
res = df.groupby(level=['Car'])['UnitsSold'].mean()
print("\nTrung bình UnitsSold theo hãng xe:")
print(res)
Kết quả
DataFrame gốc...
Car Place UnitsSold
0 BMW Delhi 95
1 Mercedes Hyderabad 80
2 Lamborgini Chandigarh 80
3 Audi Bangalore 75
4 Mercedes Hyderabad 90
5 Porsche Mumbai 90
6 RollsRoyce Mumbai 95
7 BMW Delhi 50
MultiIndex DataFrame...
UnitsSold
Car Place
Audi Bangalore 75
BMW Delhi 95
BMW Delhi 50
Lamborgini Chandigarh 80
Mercedes Hyderabad 80
Mercedes Hyderabad 90
Porsche Mumbai 90
RollsRoyce Mumbai 95
Trung bình UnitsSold theo hãng xe:
Car
Audi 75.0
BMW 72.5
Lamborgini 80.0
Mercedes 85.0
Porsche 90.0
RollsRoyce 95.0
Name: UnitsSold, dtype: float64
Giải thích
set_index(['Car', 'Place'])tạo MultiIndex 2 cấp.sort_index()quan trọng: groupby level yêu cầu index đã sắp xếp theo cấp đó.groupby(level=['Car'])nhóm theo cấp 'Car' của index (không phải cột).['UnitsSold'].mean()chọn cột và tính trung bình.- Có thể nhóm theo nhiều cấp:
level=['Car', 'Place'].