Gộp nhóm

Phân tích giỏ hàng trong Python

Isaiah Hull

Visiting Associate Professor of Finance, BI Norwegian Business School

Khám phá dữ liệu

import pandas as pd

# Tải dữ liệu quà tặng lạ.
gifts = pd.read_csv('datasets/novelty_gifts.csv')

# Xem nhanh dữ liệu với head().
print(gifts.head())
  InvoiceNo                          Description
0    562583      IVORY STRING CURTAIN WITH POLE 
1    562583        PINK AND BLACK STRING CURTAIN
2    562583                PSYCHEDELIC TILE HOOK
3    562583                ENAMEL COLANDER CREAM
4    562583  SMALL FOLDING SCISSOR(POINTED EDGE)
Phân tích giỏ hàng trong Python

Khám phá dữ liệu

# In số giao dịch.
print(len(gifts['InvoiceNo'].unique()))
9709
# In số mặt hàng.
print(len(gifts['Description'].unique()))
3461
Phân tích giỏ hàng trong Python

Cắt tỉa và gộp nhóm

Cắt tỉa Sơ đồ hiển thị danh sách mặt hàng, một số bị gạch chéo để cho thấy đã được cắt tỉa.

Gộp nhóm Sơ đồ cho thấy danh sách mặt hàng được ánh xạ thành danh sách nhỏ hơn để cho thấy

Phân tích giỏ hàng trong Python

Gộp dữ liệu

# Tải dữ liệu one-hot
onehot = pd.read_csv('datasets/online_retail_onehot.csv')

# Xem trước DataFrame
print(onehot.head(2))
    50'S CHRISTMAS GIFT BAG LARGE   DOLLY GIRL BEAKER ...  ZINC WILLIE WINKIE  CANDLE STICK
0                           False               False                               False
1                           False               False                               True
Phân tích giỏ hàng trong Python

Gộp dữ liệu

# Chọn tên cột cho túi và hộp
bag_headers = [i for i in onehot.columns if i.lower().find('bag')>=0]
box_headers = [i for i in onehot.columns if i.lower().find('box')>=0]
# Xác định tiêu đề cột
bags = onehot[bag_headers]
boxes = onehot[box_headers]
print(bags)
       50'S CHRISTMAS GIFT BAG LARGE   RED SPOT GIFT BAG LARGE  
0                              False                     False   
1                              False                     False
...                             ...                      ...
Phân tích giỏ hàng trong Python

Gộp dữ liệu

# Tổng theo cột
bags = (bags.sum(axis=1) > 0.0).values
boxes = (boxes.sum(axis=1) > 0.0).values
print(bags)
[False  True False ... False  True False]
Phân tích giỏ hàng trong Python

Gộp dữ liệu

# Thêm kết quả vào DataFrame
aggregated = pd.DataFrame(np.vstack([bags, boxes]).T, columns = ['bags', 'boxes'])
print(aggregated.head())
    bags  boxes
0  False  False
1   True  False
2  False  False
3  False  False
4   True  False
Phân tích giỏ hàng trong Python

Phân tích giỏ hàng với dữ liệu gộp

  • Quy trình gộp:
    • Mặt hàng -> Nhóm
    • Tính chỉ số
    • Xác định luật
# Tính độ hỗ trợ (support)
print(aggregated.mean())
bags     0.130075
boxes    0.071429
Phân tích giỏ hàng trong Python

Ayo berlatih!

Phân tích giỏ hàng trong Python

Preparing Video For Download...