Pandas GroupBy: Hướng dẫn từ cơ bản đến thực tế

data-analytics
pandas
GroupBy là một trong những thao tác quan trọng nhất trong Pandas. Bài này giải thích cách hoạt động và các use cases thực tế.
Published

May 2, 2026

GroupBy là gì?

groupby() trong Pandas cho phép bạn chia dữ liệu thành các nhóm, áp dụng một hàm, rồi kết hợp kết quả lại.

Pattern cơ bản: Split → Apply → Combine

import pandas as pd

df = pd.DataFrame({
    'region': ['North', 'South', 'North', 'South', 'North'],
    'sales': [100, 200, 150, 120, 180],
    'month': ['Jan', 'Jan', 'Feb', 'Feb', 'Mar']
})

# Tổng sales theo region
df.groupby('region')['sales'].sum()

Các aggregation phổ biến

# Nhiều aggregation cùng lúc
df.groupby('region')['sales'].agg(['sum', 'mean', 'count'])

# Đặt tên cho output columns
df.groupby('region').agg(
    total_sales=('sales', 'sum'),
    avg_sales=('sales', 'mean'),
    num_transactions=('sales', 'count')
)

GroupBy với nhiều columns

# Group theo nhiều điều kiện
df.groupby(['region', 'month'])['sales'].sum().reset_index()

Transform vs Aggregate

  • agg() → thu nhỏ DataFrame (mỗi group → 1 row)
  • transform() → giữ nguyên shape, broadcast kết quả về từng row
# Thêm cột "% so với tổng của region"
df['region_total'] = df.groupby('region')['sales'].transform('sum')
df['pct_of_region'] = df['sales'] / df['region_total'] * 100

Bài tiếp theo: Merge & Join trong Pandas