Phân tích cohort

Phân khúc khách hàng bằng Python

Karolis Urbonas

Head of Data Science, Amazon

Bản đồ nhiệt phân tích cohort

Hàng:

  • Hoạt động đầu tiên
  • Ở đây: tháng mua đầu tiên

Cột:

  • Thời gian từ hoạt động đầu tiên
  • Ở đây: số tháng từ khi mua đầu tiên

Bản đồ nhiệt cohort

Phân khúc khách hàng bằng Python

Bản đồ nhiệt phân tích cohort

Hàng:

  • Hoạt động đầu tiên
  • Ở đây: tháng mua đầu tiên

Cột:

  • Thời gian từ hoạt động đầu tiên
  • Ở đây: số tháng từ khi mua đầu tiên

Phân khúc khách hàng bằng Python

Dữ liệu bán lẻ trực tuyến

Hơn 0,5 triệu giao dịch từ một cửa hàng bán lẻ trực tuyến tại Anh.

Ta sẽ dùng mẫu ngẫu nhiên 20% của tập dữ liệu này trong suốt khóa học.

Bán lẻ trực tuyến

Phân khúc khách hàng bằng Python

5 hàng đầu của dữ liệu

online.head()

5 hàng đầu

Phân khúc khách hàng bằng Python

Gán tháng mua đầu tiên (cohort)

def get_month(x): return dt.datetime(x.year, x.month, 1)

online['InvoiceMonth'] = online['InvoiceDate'].apply(get_month)
grouping = online.groupby('CustomerID')['InvoiceMonth']
online['CohortMonth'] = grouping.transform('min')
online.head()

top5-cohort-added

Phân khúc khách hàng bằng Python

Trích số nguyên từ dữ liệu thời gian

Định nghĩa hàm trích xuất số nguyên year, monthday.

Sẽ dùng xuyên suốt khóa học.

def get_date_int(df, column):
    year = df[column].dt.year
    month = df[column].dt.month
    day = df[column].dt.day
    return year, month, day
Phân khúc khách hàng bằng Python

Gán độ lệch thời gian

invoice_year, invoice_month, _ = get_date_int(online, 'InvoiceMonth') 
cohort_year, cohort_month, _ = get_date_int(online, 'CohortMonth')

years_diff = invoice_year - cohort_year months_diff = invoice_month - cohort_month
online['CohortIndex'] = years_diff * 12 + months_diff + 1 online.head()

top5-time-offset-added

Phân khúc khách hàng bằng Python

Đếm khách hàng hoạt động hằng tháng theo cohort

grouping = online.groupby(['CohortMonth', 'CohortIndex'])

cohort_data = grouping['CustomerID'].apply(pd.Series.nunique)
cohort_data = cohort_data.reset_index()
cohort_counts = cohort_data.pivot(index='CohortMonth', columns='CohortIndex', values='CustomerID')
print(cohort_counts)
Phân khúc khách hàng bằng Python

bảng-pivot-online-đếm

Phân khúc khách hàng bằng Python

Đến lượt bạn tạo cohort!

Phân khúc khách hàng bằng Python

Preparing Video For Download...