Dalam tutorial ini, Anda akan mempelajari cara mengimplementasikan segmentasi pelanggan menggunakan analisis RFM (Recency, Frequency, Monetary) dari nol di Python.
Di sektor Ritel, berbagai jaringan hipermarket menghasilkan jumlah data yang sangat besar. Data ini dihasilkan setiap hari di seluruh gerai. Basis data transaksi pelanggan yang luas ini perlu dianalisis untuk merancang strategi yang menguntungkan.
Setiap pelanggan memiliki kebutuhan yang berbeda-beda. Seiring bertambahnya basis pelanggan dan transaksi, tidak mudah memahami kebutuhan masing-masing pelanggan. Mengidentifikasi pelanggan potensial dapat meningkatkan kampanye pemasaran, yang pada akhirnya menaikkan penjualan. Segmentasi dapat berperan lebih baik dalam mengelompokkan pelanggan ke dalam berbagai segmen.
Apa itu Segmentasi Pelanggan?
Segmentasi pelanggan adalah metode membagi pelanggan ke dalam kelompok atau klaster berdasarkan karakteristik yang sama. Peneliti pasar dapat membagi pelanggan dalam model B2C menggunakan berbagai karakteristik demografis pelanggan seperti pekerjaan, jenis kelamin, usia, lokasi, dan status pernikahan. Karakteristik psikografis seperti kelas sosial, gaya hidup, dan kepribadian serta karakteristik perilaku seperti pola belanja, kebiasaan konsumsi, penggunaan produk/layanan, dan produk yang pernah dibeli. Dalam model B2B menggunakan berbagai karakteristik perusahaan seperti ukuran perusahaan, jenis industri, dan lokasi.
Kebutuhan Segmentasi Pelanggan
Membantu mengidentifikasi pelanggan paling potensial.
Memudahkan manajer berkomunikasi dengan kelompok audiens yang ditargetkan.
Juga membantu memilih media terbaik untuk berkomunikasi dengan segmen yang ditargetkan.
Meningkatkan kualitas layanan, loyalitas, dan retensi.
Memperbaiki hubungan pelanggan melalui pemahaman kebutuhan setiap segmen.
Menyediakan peluang untuk upselling dan cross-selling.
Membantu manajer merancang penawaran khusus bagi pelanggan yang ditargetkan untuk mendorong pembelian lebih banyak produk.
Membantu perusahaan selangkah lebih maju dari pesaing.
Membantu pula mengidentifikasi produk baru yang mungkin diminati pelanggan.
Jenis-jenis Segmentasi
Segmentasi Pelanggan dengan analisis RFM
Analisis RFM (Recency, Frequency, Monetary) adalah pendekatan berbasis perilaku untuk mengelompokkan pelanggan ke dalam segmen. Ini mengelompokkan pelanggan berdasarkan transaksi pembelian sebelumnya. Seberapa baru, seberapa sering, dan seberapa banyak pelanggan berbelanja. RFM menyaring pelanggan ke dalam berbagai kelompok untuk tujuan layanan yang lebih baik. Ini membantu manajer mengidentifikasi pelanggan potensial untuk bisnis yang lebih menguntungkan. Ada segmen pelanggan yang pemboros besar, tetapi bagaimana jika mereka hanya membeli sekali atau seberapa baru mereka membeli? Apakah mereka sering membeli produk kita? Selain itu, ini membantu manajer menjalankan kampanye promosi yang efektif untuk layanan yang dipersonalisasi.
Recency (R): Siapa yang membeli baru-baru ini? Jumlah hari sejak pembelian terakhir (recency paling kecil)
Frequency (F): Siapa yang membeli dengan frekuensi tinggi? Artinya total jumlah pembelian (frekuensi tinggi)
Monetary Value (M): Siapa yang memiliki nilai pembelian tinggi? Artinya total uang yang dibelanjakan pelanggan (nilai moneter tinggi)
Di sini, masing-masing dari tiga variabel (Recency, Frequency, dan Monetary) terdiri dari empat kelompok yang sama besar, yang menghasilkan 64 (4x4x4) segmen pelanggan berbeda.
Hitung nilai Recency, Frequency, Monetary untuk setiap pelanggan.
Tambahkan nilai bin segmen ke tabel RFM menggunakan kuartil.
Urutkan skor RFM pelanggan secara menaik.
1. Hitung nilai Recency, Frequency, Monetary untuk setiap pelanggan.
2. Tambahkan nilai bin segmen ke tabel RFM menggunakan kuartil.
3. Gabungkan semua skor dalam satu kolom (RFM_Score).
Identifikasi Segmen Pelanggan Potensial menggunakan RFM di Python
Mengimpor Pustaka yang Diperlukan
#import modulesimport pandas as pd # for dataframesimport matplotlib.pyplot as plt # for plotting graphsimport seaborn as sns # for plotting graphsimport datetime as dt
Didukung oleh
Memuat Dataset
Mari kita muat terlebih dahulu dataset HR yang diperlukan menggunakan fungsi read CSV dari pandas. Anda dapat mengunduh datanya dari tautan ini.
data = pd.read_excel("Online_Retail.xlsx")Didukung oleh
data= data[pd.notnull(data['CustomerID'])]Didukung oleh
Menghapus Duplikasi
Terkadang Anda mendapatkan dataset yang berantakan. Anda mungkin harus menangani duplikasi, yang akan mengacaukan analisis. Dalam python, pandas menyediakan fungsi drop_duplicates(), yang menghapus catatan yang berulang atau duplikat.
filtered_data=data[['Country','CustomerID']].drop_duplicates()Didukung oleh
Mari Masuk ke Insight Data
#Top ten country's customer
filtered_data.Country.value_counts()[:10].plot(kind='bar')Didukung oleh
<matplotlib.axes._subplots.AxesSubplot at 0x7fd81725dfd0>Didukung oleh
Pada dataset yang diberikan, Anda dapat melihat sebagian besar pelanggan berasal dari "United Kingdom". Jadi, Anda dapat memfilter data untuk pelanggan United Kingdom.
uk_data=data[data.Country=='United Kingdom']Didukung oleh
Fungsi describe() di pandas memudahkan untuk mendapatkan berbagai statistik ringkas. Fungsi ini mengembalikan jumlah, rata-rata, simpangan baku, nilai minimum dan maksimum, serta kuantil data.
Di sini, Anda dapat melihat sebagian pelanggan memesan dengan kuantitas negatif, yang tidak mungkin. Jadi, Anda perlu memfilter Quantity yang lebih besar dari nol.
uk_data = uk_data[(uk_data['Quantity']>0)]Didukung oleh
In: # Change the name of columns
rfm.columns=['monetary','frequency','recency']
Di sini, Anda dapat menyaring kolom yang diperlukan untuk analisis RFM. Anda hanya membutuhkan lima kolom: CustomerID, InvoiceDate, InvoiceNo, Quantity, dan UnitPrice. CustomerID akan mendefinisikan pelanggan secara unik, InvoiceDate membantu Anda menghitung recency pembelian, InvoiceNo membantu Anda menghitung berapa kali transaksi dilakukan (frekuensi). Quantity yang dibeli di setiap transaksi dan UnitPrice dari setiap unit yang dibeli pelanggan akan membantu Anda menghitung total nilai pembelian.
uk_data=uk_data[['CustomerID','InvoiceDate','InvoiceNo','Quantity','UnitPrice']]Didukung oleh
uk_data['TotalPrice']= uk_data['Quantity']* uk_data['UnitPrice']Didukung oleh
uk_data['InvoiceDate'].min(),uk_data['InvoiceDate'].max()Didukung oleh
(Timestamp('2010-12-01 08:26:00'),Timestamp('2011-12-09 12:49:00'))Didukung oleh
PRESENT = dt.datetime(2011,12,10)
uk_data['InvoiceDate']= pd.to_datetime(uk_data['InvoiceDate'])Didukung oleh
Pelanggan dengan recency terendah, serta frequency dan monetary tertinggi dianggap sebagai pelanggan teratas.
qcut() adalah fungsi diskretisasi berbasis kuantil. qcut membagi data berdasarkan kuantil sampel. Misalnya, 1000 nilai untuk 4 kuantil akan menghasilkan objek kategorikal yang menunjukkan keanggotaan kuantil untuk setiap pelanggan.
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'])Didukung oleh
Gabungkan ketiga kuartil (r_quartile, f_quartile, m_quartile) dalam satu kolom; peringkat ini akan membantu Anda mensegmentasi pelanggan dengan baik.
rfm['RFM_Score']= rfm.r_quartile.astype(str)+ rfm.f_quartile.astype(str)+ rfm.m_quartile.astype(str)
rfm.head()Didukung oleh
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()Didukung oleh
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
Kesimpulan
Selamat, Anda telah sampai di akhir tutorial ini!
Dalam tutorial ini, Anda telah membahas banyak detail tentang Segmentasi Pelanggan. Anda telah mempelajari apa itu segmentasi pelanggan, kebutuhan akan Segmentasi Pelanggan, jenis-jenis Segmentasi, analisis RFM, implementasi RFM dari nol di python. Anda juga membahas beberapa konsep dasar pandas seperti menangani duplikasi, groupby, dan qcut() untuk bin berdasarkan kuantil sampel.
Semoga sekarang Anda dapat memanfaatkan pemodelan topik untuk menganalisis dataset Anda sendiri. Terima kasih telah membaca tutorial ini!
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Selami ilmu data dengan Python dan pelajari cara menganalisis serta memvisualisasikan data Anda secara efektif. Tak perlu pengalaman atau keterampilan coding.
Di sektor Ritel, berbagai jaringan hipermarket menghasilkan jumlah data yang sangat besar. Data ini dihasilkan setiap hari di seluruh gerai. Basis data transaksi pelanggan yang luas ini perlu dianalisis untuk merancang strategi yang menguntungkan.
Setiap pelanggan memiliki kebutuhan yang berbeda-beda. Seiring bertambahnya basis pelanggan dan transaksi, tidak mudah memahami kebutuhan masing-masing pelanggan. Mengidentifikasi pelanggan potensial dapat meningkatkan kampanye pemasaran, yang pada akhirnya menaikkan penjualan. Segmentasi dapat berperan lebih baik dalam mengelompokkan pelanggan ke dalam berbagai segmen.
Apa itu Segmentasi Pelanggan?
Segmentasi pelanggan adalah metode membagi pelanggan ke dalam kelompok atau klaster berdasarkan karakteristik yang sama. Peneliti pasar dapat membagi pelanggan dalam model B2C menggunakan berbagai karakteristik demografis pelanggan seperti pekerjaan, jenis kelamin, usia, lokasi, dan status pernikahan. Karakteristik psikografis seperti kelas sosial, gaya hidup, dan kepribadian serta karakteristik perilaku seperti pola belanja, kebiasaan konsumsi, penggunaan produk/layanan, dan produk yang pernah dibeli. Dalam model B2B menggunakan berbagai karakteristik perusahaan seperti ukuran perusahaan, jenis industri, dan lokasi.
Kebutuhan Segmentasi Pelanggan
Jenis-jenis Segmentasi
Segmentasi Pelanggan dengan analisis RFM
Analisis RFM (Recency, Frequency, Monetary) adalah pendekatan berbasis perilaku untuk mengelompokkan pelanggan ke dalam segmen. Ini mengelompokkan pelanggan berdasarkan transaksi pembelian sebelumnya. Seberapa baru, seberapa sering, dan seberapa banyak pelanggan berbelanja. RFM menyaring pelanggan ke dalam berbagai kelompok untuk tujuan layanan yang lebih baik. Ini membantu manajer mengidentifikasi pelanggan potensial untuk bisnis yang lebih menguntungkan. Ada segmen pelanggan yang pemboros besar, tetapi bagaimana jika mereka hanya membeli sekali atau seberapa baru mereka membeli? Apakah mereka sering membeli produk kita? Selain itu, ini membantu manajer menjalankan kampanye promosi yang efektif untuk layanan yang dipersonalisasi.
Di sini, masing-masing dari tiga variabel (Recency, Frequency, dan Monetary) terdiri dari empat kelompok yang sama besar, yang menghasilkan 64 (4x4x4) segmen pelanggan berbeda.
Langkah-langkah RFM (Recency, Frequency, Monetary):
1. Hitung nilai Recency, Frequency, Monetary untuk setiap pelanggan.
2. Tambahkan nilai bin segmen ke tabel RFM menggunakan kuartil.
3. Gabungkan semua skor dalam satu kolom (RFM_Score).
Identifikasi Segmen Pelanggan Potensial menggunakan RFM di Python
Mengimpor Pustaka yang Diperlukan
Memuat Dataset
Mari kita muat terlebih dahulu dataset HR yang diperlukan menggunakan fungsi read CSV dari pandas. Anda dapat mengunduh datanya dari tautan ini.
Menghapus Duplikasi
Terkadang Anda mendapatkan dataset yang berantakan. Anda mungkin harus menangani duplikasi, yang akan mengacaukan analisis. Dalam python, pandas menyediakan fungsi drop_duplicates(), yang menghapus catatan yang berulang atau duplikat.
Mari Masuk ke Insight Data
Pada dataset yang diberikan, Anda dapat melihat sebagian besar pelanggan berasal dari "United Kingdom". Jadi, Anda dapat memfilter data untuk pelanggan United Kingdom.
Fungsi describe() di pandas memudahkan untuk mendapatkan berbagai statistik ringkas. Fungsi ini mengembalikan jumlah, rata-rata, simpangan baku, nilai minimum dan maksimum, serta kuantil data.
Di sini, Anda dapat melihat sebagian pelanggan memesan dengan kuantitas negatif, yang tidak mungkin. Jadi, Anda perlu memfilter Quantity yang lebih besar dari nol.
Saring Kolom yang Diperlukan
Di sini, Anda dapat menyaring kolom yang diperlukan untuk analisis RFM. Anda hanya membutuhkan lima kolom: CustomerID, InvoiceDate, InvoiceNo, Quantity, dan UnitPrice. CustomerID akan mendefinisikan pelanggan secara unik, InvoiceDate membantu Anda menghitung recency pembelian, InvoiceNo membantu Anda menghitung berapa kali transaksi dilakukan (frekuensi). Quantity yang dibeli di setiap transaksi dan UnitPrice dari setiap unit yang dibeli pelanggan akan membantu Anda menghitung total nilai pembelian.
Analisis RFM
Di sini, Anda akan melakukan operasi berikut:
Menghitung Kuantil dari nilai RFM
Pelanggan dengan recency terendah, serta frequency dan monetary tertinggi dianggap sebagai pelanggan teratas.
qcut() adalah fungsi diskretisasi berbasis kuantil. qcut membagi data berdasarkan kuantil sampel. Misalnya, 1000 nilai untuk 4 kuantil akan menghasilkan objek kategorikal yang menunjukkan keanggotaan kuantil untuk setiap pelanggan.
Interpretasi Hasil RFM
Gabungkan ketiga kuartil (r_quartile, f_quartile, m_quartile) dalam satu kolom; peringkat ini akan membantu Anda mensegmentasi pelanggan dengan baik.
Kesimpulan
Selamat, Anda telah sampai di akhir tutorial ini!
Dalam tutorial ini, Anda telah membahas banyak detail tentang Segmentasi Pelanggan. Anda telah mempelajari apa itu segmentasi pelanggan, kebutuhan akan Segmentasi Pelanggan, jenis-jenis Segmentasi, analisis RFM, implementasi RFM dari nol di python. Anda juga membahas beberapa konsep dasar pandas seperti menangani duplikasi, groupby, dan qcut() untuk bin berdasarkan kuantil sampel.
Semoga sekarang Anda dapat memanfaatkan pemodelan topik untuk menganalisis dataset Anda sendiri. Terima kasih telah membaca tutorial ini!
Jika Anda ingin mempelajari lebih lanjut tentang Python, ikuti kursus gratis DataCamp Intro to Python for Data Science.