Trong lĩnh vực bán lẻ, các chuỗi đại siêu thị tạo ra một lượng dữ liệu cực kỳ lớn. Dữ liệu này được tạo ra hàng ngày trên khắp các cửa hàng. Cơ sở dữ liệu khổng lồ về giao dịch của khách hàng này cần được phân tích để xây dựng các chiến lược sinh lợi.
Tất cả khách hàng đều có những nhu cầu khác nhau. Khi lượng khách hàng và giao dịch tăng lên, không dễ để hiểu yêu cầu của từng người. Việc xác định khách hàng tiềm năng có thể cải thiện chiến dịch tiếp thị, từ đó tăng doanh số. Phân khúc có thể đóng vai trò tốt hơn trong việc nhóm những khách hàng đó vào các phân khúc khác nhau.
Phân khúc khách hàng là gì?
Phân khúc khách hàng là phương pháp chia khách hàng thành các nhóm hoặc cụm dựa trên những đặc điểm chung. Nhà nghiên cứu thị trường có thể phân khúc khách hàng theo mô hình B2C dựa trên các đặc điểm nhân khẩu học của khách hàng như nghề nghiệp, giới tính, độ tuổi, vị trí và tình trạng hôn nhân. Đặc điểm tâm lý như tầng lớp xã hội, lối sống và tính cách, và đặc điểm hành vi như chi tiêu, thói quen tiêu dùng, mức độ sử dụng sản phẩm/dịch vụ, và sản phẩm đã mua trước đây. Trong mô hình B2B, dựa trên các đặc điểm của công ty như quy mô công ty, loại hình ngành và vị trí.
Sự cần thiết của phân khúc khách hàng
Giúp xác định khách hàng tiềm năng nhất.
Hỗ trợ nhà quản lý dễ dàng giao tiếp với nhóm khán giả mục tiêu.
Giúp chọn kênh truyền thông phù hợp nhất để giao tiếp với phân khúc mục tiêu.
Cải thiện chất lượng dịch vụ, lòng trung thành và khả năng giữ chân.
Cải thiện quan hệ khách hàng nhờ hiểu rõ hơn nhu cầu của từng phân khúc.
Mang lại cơ hội bán gia tăng (upsell) và bán chéo (cross-sell).
Giúp nhà quản lý thiết kế ưu đãi đặc biệt cho khách hàng mục tiêu, khuyến khích họ mua nhiều sản phẩm hơn.
Giúp công ty đi trước một bước so với đối thủ.
Giúp xác định các sản phẩm mới mà khách hàng có thể quan tâm.
Các loại phân khúc
Phân khúc khách hàng bằng phân tích RFM
RFM (Recency, Frequency, Monetary) là phương pháp dựa trên hành vi để nhóm khách hàng thành các phân khúc. Nó nhóm khách hàng dựa trên các giao dịch mua trước đây: mua gần đây khi nào, mua thường xuyên ra sao và chi bao nhiêu. RFM lọc khách hàng vào những nhóm khác nhau nhằm mục đích phục vụ tốt hơn. Nó giúp nhà quản lý xác định khách hàng tiềm năng để làm ăn sinh lợi hơn. Có một phân khúc khách hàng chi tiêu lớn, nhưng nếu họ chỉ mua một lần hoặc đã mua gần đây chưa? Họ có thường xuyên mua sản phẩm của chúng ta không? Đồng thời, nó giúp nhà quản lý chạy chiến dịch khuyến mãi hiệu quả cho dịch vụ cá nhân hóa.
Recency (R): Ai mua gần đây? Số ngày kể từ lần mua cuối (độ mới thấp nhất).
Frequency (F): Ai mua thường xuyên? Tức là tổng số lần mua (tần suất cao).
Monetary Value (M): Ai có số tiền mua cao? Tức là tổng số tiền khách hàng đã chi (giá trị tiền tệ cao).
Ở đây, mỗi trong ba biến (Recency, Frequency và Monetary) gồm bốn nhóm bằng nhau, tạo ra 64 (4x4x4) phân khúc khách hàng khác nhau.
Các bước RFM (Recency, Frequency, Monetary):
Tính các giá trị Recency, Frequency, Monetary cho từng khách hàng.
Thêm các giá trị nhóm (bin) vào bảng RFM bằng tứ phân vị (quartile).
Sắp xếp điểm RFM của khách hàng theo thứ tự tăng dần.
1. Tính các giá trị Recency, Frequency, Monetary cho từng khách hàng.
2. Thêm các giá trị nhóm (bin) vào bảng RFM bằng tứ phân vị.
3. Ghép tất cả điểm vào một cột (RFM_Score).
Xác định phân khúc khách hàng tiềm năng bằng RFM trong Python
Nhập thư viện cần thiết
#import modulesimport pandas as pd # for dataframesimport matplotlib.pyplot as plt # for plotting graphsimport seaborn as sns # for plotting graphsimport datetime as dt
Được hỗ trợ bởi
Tải dữ liệu
Hãy bắt đầu bằng cách tải bộ dữ liệu HR cần thiết bằng hàm đọc CSV của pandas. Bạn có thể tải dữ liệu từ liên kết này.
Đôi khi bạn nhận được một bộ dữ liệu lộn xộn. Bạn có thể phải xử lý dữ liệu trùng lặp, điều này sẽ làm sai lệch phân tích. Trong python, pandas cung cấp hàm drop_duplicates(), giúp loại bỏ các bản ghi lặp lại hoặc trùng lặp.
filtered_data=data[['Country','CustomerID']].drop_duplicates()Được hỗ trợ bởi
Cùng khám phá một số insight dữ liệu
#Top ten country's customer
filtered_data.Country.value_counts()[:10].plot(kind='bar')Được hỗ trợ bởi
<matplotlib.axes._subplots.AxesSubplot at 0x7fd81725dfd0>Được hỗ trợ bởi
Trong bộ dữ liệu đã cho, bạn có thể thấy phần lớn khách hàng đến từ "United Kingdom". Vậy, bạn có thể lọc dữ liệu cho khách hàng tại United Kingdom.
Hàm describe() trong pandas rất tiện để nhận các thống kê tóm tắt. Hàm này trả về số lượng, giá trị trung bình, độ lệch chuẩn, giá trị nhỏ nhất và lớn nhất, cùng các tứ phân vị của dữ liệu.
Tại đây, bạn có thể lọc các cột cần thiết cho phân tích RFM. Bạn chỉ cần năm cột CustomerID, InvoiceDate, InvoiceNo, Quantity và UnitPrice. CustomerID sẽ xác định duy nhất khách hàng của bạn, InvoiceDate giúp bạn tính độ mới của lần mua, InvoiceNo giúp bạn đếm số lần thực hiện giao dịch (tần suất). Số lượng mua trong mỗi giao dịch và đơn giá của mỗi đơn vị khách hàng mua sẽ giúp bạn tính tổng số tiền đã mua.
uk_data=uk_data[['CustomerID','InvoiceDate','InvoiceNo','Quantity','UnitPrice']]Được hỗ trợ bởi
uk_data['TotalPrice']= uk_data['Quantity']* uk_data['UnitPrice']Được hỗ trợ bởi
uk_data['InvoiceDate'].min(),uk_data['InvoiceDate'].max()Được hỗ trợ bởi
(Timestamp('2010-12-01 08:26:00'),Timestamp('2011-12-09 12:49:00'))Được hỗ trợ bởi
PRESENT = dt.datetime(2011,12,10)
uk_data['InvoiceDate']= pd.to_datetime(uk_data['InvoiceDate'])Được hỗ trợ bởi
Khách hàng có recency thấp nhất, frequency và monetary cao nhất được xem là khách hàng hàng đầu.
qcut() là hàm rời rạc hóa dựa trên tứ phân vị. qcut chia dữ liệu dựa trên các tứ phân vị mẫu. Ví dụ, 1000 giá trị cho 4 tứ phân vị sẽ tạo ra đối tượng phân loại cho biết mỗi khách hàng thuộc tứ phân vị nào.
rfm['r_quartile']= pd.qcut(rfm['recency'],4,['1','2','3','4'])
rfm['f_quartile']= pd.qcut(rfm['frequency'],4,['4','3','2','1'])
rfm['m_quartile']= pd.qcut(rfm['monetary'],4,['4','3','2','1'])Được hỗ trợ bởi
Kết hợp cả ba tứ phân vị (r_quartile, f_quartile, m_quartile) trong một cột, thứ hạng này sẽ giúp bạn phân khúc khách hàng hiệu quả.
rfm['RFM_Score']= rfm.r_quartile.astype(str)+ rfm.f_quartile.astype(str)+ rfm.m_quartile.astype(str)
rfm.head()Được hỗ trợ bởi
monetary
frequency
recency
r_quartile
f_quartile
m_quartile
RFM_Score
CustomerID
12346.0
325
77183.60
1
1
1
1
111
12747.0
2
4196.01
103
4
1
4
414
12748.0
0
33719.73
4596
4
1
4
414
12749.0
3
4090.88
199
4
1
4
414
12820.0
3
942.34
59
3
2
4
324
# Filter out Top/Best cusotmers
rfm[rfm['RFM_Score']=='111'].sort_values('monetary', ascending=False).head()Được hỗ trợ bởi
monetary
frequency
recency
r_quartile
f_quartile
m_quartile
RFM_Score
CustomerID
16754.0
372
2002.4
2
1
1
1
111
12346.0
325
77183.6
1
1
1
1
111
15749.0
235
44534.3
10
1
1
1
111
16698.0
226
1998.0
5
1
1
1
111
13135.0
196
3096.0
1
1
1
1
111
Kết luận
Chúc mừng bạn đã hoàn thành bài hướng dẫn!
Trong bài hướng dẫn này, bạn đã tìm hiểu rất nhiều về phân khúc khách hàng. Bạn đã học phân khúc khách hàng là gì, sự cần thiết của phân khúc, các loại phân khúc, phân tích RFM, và cách triển khai RFM từ đầu trong python. Ngoài ra, bạn đã điểm qua một số khái niệm cơ bản của pandas như xử lý dữ liệu trùng lặp, groupby và qcut() để chia nhóm theo tứ phân vị mẫu.
Hy vọng giờ đây bạn có thể tận dụng mô hình chủ đề để phân tích các bộ dữ liệu của riêng mình. Cảm ơn bạn đã đọc bài hướng dẫn!
Trong lĩnh vực bán lẻ, các chuỗi đại siêu thị tạo ra một lượng dữ liệu cực kỳ lớn. Dữ liệu này được tạo ra hàng ngày trên khắp các cửa hàng. Cơ sở dữ liệu khổng lồ về giao dịch của khách hàng này cần được phân tích để xây dựng các chiến lược sinh lợi.
Tất cả khách hàng đều có những nhu cầu khác nhau. Khi lượng khách hàng và giao dịch tăng lên, không dễ để hiểu yêu cầu của từng người. Việc xác định khách hàng tiềm năng có thể cải thiện chiến dịch tiếp thị, từ đó tăng doanh số. Phân khúc có thể đóng vai trò tốt hơn trong việc nhóm những khách hàng đó vào các phân khúc khác nhau.
Phân khúc khách hàng là gì?
Phân khúc khách hàng là phương pháp chia khách hàng thành các nhóm hoặc cụm dựa trên những đặc điểm chung. Nhà nghiên cứu thị trường có thể phân khúc khách hàng theo mô hình B2C dựa trên các đặc điểm nhân khẩu học của khách hàng như nghề nghiệp, giới tính, độ tuổi, vị trí và tình trạng hôn nhân. Đặc điểm tâm lý như tầng lớp xã hội, lối sống và tính cách, và đặc điểm hành vi như chi tiêu, thói quen tiêu dùng, mức độ sử dụng sản phẩm/dịch vụ, và sản phẩm đã mua trước đây. Trong mô hình B2B, dựa trên các đặc điểm của công ty như quy mô công ty, loại hình ngành và vị trí.
Sự cần thiết của phân khúc khách hàng
Các loại phân khúc
Phân khúc khách hàng bằng phân tích RFM
RFM (Recency, Frequency, Monetary) là phương pháp dựa trên hành vi để nhóm khách hàng thành các phân khúc. Nó nhóm khách hàng dựa trên các giao dịch mua trước đây: mua gần đây khi nào, mua thường xuyên ra sao và chi bao nhiêu. RFM lọc khách hàng vào những nhóm khác nhau nhằm mục đích phục vụ tốt hơn. Nó giúp nhà quản lý xác định khách hàng tiềm năng để làm ăn sinh lợi hơn. Có một phân khúc khách hàng chi tiêu lớn, nhưng nếu họ chỉ mua một lần hoặc đã mua gần đây chưa? Họ có thường xuyên mua sản phẩm của chúng ta không? Đồng thời, nó giúp nhà quản lý chạy chiến dịch khuyến mãi hiệu quả cho dịch vụ cá nhân hóa.
Ở đây, mỗi trong ba biến (Recency, Frequency và Monetary) gồm bốn nhóm bằng nhau, tạo ra 64 (4x4x4) phân khúc khách hàng khác nhau.
Các bước RFM (Recency, Frequency, Monetary):
1. Tính các giá trị Recency, Frequency, Monetary cho từng khách hàng.
2. Thêm các giá trị nhóm (bin) vào bảng RFM bằng tứ phân vị.
3. Ghép tất cả điểm vào một cột (RFM_Score).
Xác định phân khúc khách hàng tiềm năng bằng RFM trong Python
Nhập thư viện cần thiết
Tải dữ liệu
Hãy bắt đầu bằng cách tải bộ dữ liệu HR cần thiết bằng hàm đọc CSV của pandas. Bạn có thể tải dữ liệu từ liên kết này.
Loại bỏ dữ liệu trùng lặp
Đôi khi bạn nhận được một bộ dữ liệu lộn xộn. Bạn có thể phải xử lý dữ liệu trùng lặp, điều này sẽ làm sai lệch phân tích. Trong python, pandas cung cấp hàm drop_duplicates(), giúp loại bỏ các bản ghi lặp lại hoặc trùng lặp.
Cùng khám phá một số insight dữ liệu
Trong bộ dữ liệu đã cho, bạn có thể thấy phần lớn khách hàng đến từ "United Kingdom". Vậy, bạn có thể lọc dữ liệu cho khách hàng tại United Kingdom.
Hàm describe() trong pandas rất tiện để nhận các thống kê tóm tắt. Hàm này trả về số lượng, giá trị trung bình, độ lệch chuẩn, giá trị nhỏ nhất và lớn nhất, cùng các tứ phân vị của dữ liệu.
Ở đây, bạn có thể thấy một số khách hàng đặt hàng với số lượng âm, điều này là không thể. Vì vậy, bạn cần lọc Quantity lớn hơn 0.
Lọc các cột cần thiết
Tại đây, bạn có thể lọc các cột cần thiết cho phân tích RFM. Bạn chỉ cần năm cột CustomerID, InvoiceDate, InvoiceNo, Quantity và UnitPrice. CustomerID sẽ xác định duy nhất khách hàng của bạn, InvoiceDate giúp bạn tính độ mới của lần mua, InvoiceNo giúp bạn đếm số lần thực hiện giao dịch (tần suất). Số lượng mua trong mỗi giao dịch và đơn giá của mỗi đơn vị khách hàng mua sẽ giúp bạn tính tổng số tiền đã mua.
Phân tích RFM
Tại đây, bạn sẽ thực hiện các thao tác sau:
Tính các tứ phân vị của giá trị RFM
Khách hàng có recency thấp nhất, frequency và monetary cao nhất được xem là khách hàng hàng đầu.
qcut() là hàm rời rạc hóa dựa trên tứ phân vị. qcut chia dữ liệu dựa trên các tứ phân vị mẫu. Ví dụ, 1000 giá trị cho 4 tứ phân vị sẽ tạo ra đối tượng phân loại cho biết mỗi khách hàng thuộc tứ phân vị nào.
Diễn giải kết quả RFM
Kết hợp cả ba tứ phân vị (r_quartile, f_quartile, m_quartile) trong một cột, thứ hạng này sẽ giúp bạn phân khúc khách hàng hiệu quả.
Kết luận
Chúc mừng bạn đã hoàn thành bài hướng dẫn!
Trong bài hướng dẫn này, bạn đã tìm hiểu rất nhiều về phân khúc khách hàng. Bạn đã học phân khúc khách hàng là gì, sự cần thiết của phân khúc, các loại phân khúc, phân tích RFM, và cách triển khai RFM từ đầu trong python. Ngoài ra, bạn đã điểm qua một số khái niệm cơ bản của pandas như xử lý dữ liệu trùng lặp, groupby và qcut() để chia nhóm theo tứ phân vị mẫu.
Hy vọng giờ đây bạn có thể tận dụng mô hình chủ đề để phân tích các bộ dữ liệu của riêng mình. Cảm ơn bạn đã đọc bài hướng dẫn!
Nếu bạn muốn học thêm về Python, hãy tham gia khóa miễn phí Giới thiệu Python cho Khoa học Dữ liệu của DataCamp.