Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Thực hiện groupby trên MultiIndex trong Pandas

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'].