Nội dung

1. Khái niệm Grouping

Trong phân tích dữ liệu, chúng ta thường cần:

  • Nhóm dữ liệu theo một tiêu chí

  • Sau đó tính toán thống kê trên từng nhóm.

Ví dụ dataset:

ProductRegionRevenue
ANorth1000
BSouth2000
ANorth1500
BSouth1800

Chúng ta có thể tính:

  • Tổng doanh thu theo Region

  • Tổng doanh thu theo Product


2. Hàm groupby()

Trong Pandas, sử dụng:

df.groupby()

Ví dụ:

import pandas as pd

df = pd.read_csv("sales.csv")

2.1 Nhóm dữ liệu theo một cột

Ví dụ nhóm theo Region

df.groupby("Region")

Tính tổng doanh thu theo Region

df.groupby("Region")["Revenue"].sum()

Ví dụ kết quả:

RegionRevenue
North4500
South3800

3. Các hàm tổng hợp (Aggregation)

Sau khi nhóm dữ liệu, có thể áp dụng các hàm thống kê.


3.1 Tính tổng

df.groupby("Region")["Revenue"].sum()

3.2 Đếm số lượng

df.groupby("Region")["Revenue"].count()

3.3 Tính trung bình

df.groupby("Region")["Revenue"].mean()

3.4 Tìm giá trị lớn nhất

df.groupby("Region")["Revenue"].max()

3.5 Tìm giá trị nhỏ nhất

df.groupby("Region")["Revenue"].min()

4. Nhóm theo nhiều cột

Có thể nhóm theo nhiều cột cùng lúc.

Ví dụ:

df.groupby(["Region","Product"])["Revenue"].sum()

Ví dụ kết quả:

RegionProductRevenue
NorthA2500
NorthB2000
SouthA1200
SouthB2600

5. Sử dụng agg() để tính nhiều thống kê

Hàm agg() cho phép tính nhiều thống kê cùng lúc.

Ví dụ:

df.groupby("Region")["Revenue"].agg(["sum","mean","max"])

Ví dụ kết quả:

Regionsummeanmax
North450015002000
South380012661800

6. Pivot Table trong Pandas

Pivot Table giúp tổng hợp dữ liệu theo nhiều chiều.

Cú pháp:

pd.pivot_table()

Ví dụ

pd.pivot_table(df,
               values="Revenue",
               index="Region",
               columns="Product",
               aggfunc="sum")

Ví dụ kết quả:

RegionAB
North25002000
South12002600

III. LÝ THUYẾT LIÊN QUAN

1. Mô hình Split – Apply – Combine

Groupby hoạt động theo nguyên tắc:

Split

Chia dữ liệu thành các nhóm.

Apply

Áp dụng hàm tính toán trên từng nhóm.

Combine

Kết hợp kết quả lại thành bảng mới.


2. Ứng dụng thực tế của Groupby

Groupby thường được dùng để:

  • Phân tích doanh thu theo khu vực

  • Phân tích doanh thu theo sản phẩm

  • Phân tích doanh số theo tháng

  • Phân tích hành vi khách hàng


IV. TRÌNH TỰ THỰC HIỆN

Bước 1: Import thư viện

import pandas as pd

Bước 2: Đọc dữ liệu

df = pd.read_csv("sales.csv")

Bước 3: Nhóm dữ liệu theo Region

df.groupby("Region")["Revenue"].sum()

Bước 4: Nhóm theo nhiều cột

df.groupby(["Region","Product"])["Revenue"].sum()

Bước 5: Tính nhiều thống kê

df.groupby("Region")["Revenue"].agg(["sum","mean","max"])

Bước 6: Tạo Pivot Table

pd.pivot_table(df,
               values="Revenue",
               index="Region",
               columns="Product",
               aggfunc="sum")