Analisis Segmentasi Pelanggan: Tutorial

DW ADS

Hai sobat Exsight! Selamat datang di artikel Exsight. Sebelumnya, kita udah bahas konsep dasar analisis segmentasi pelanggan. Tapi, paham konsep aja nggak cukup! Yang paling penting adalah gimana cara menerapkannya di dunia nyata. Gimana cara menentukan segmen pelanggan yang tepat? Gimana teknik ini bisa bantu ningkatin retensi pelanggan dan strategi pemasaran?

Nah, di artikel kali ini, kita bakal kasih tutorial langkah demi langkah buat ngelakuin segmentasi pakai python. Nggak cuma itu, kita juga udah nyiapin studi kasus agar kamu makin ngerti cara baca dan interpretasi hasil segmentasi pelanggan. Dengan studi kasus ini, kamu bisa lihat langsung gimana segmentasi pelanggan bisa bantu optimasi strategi bisnis, ningkatin kepuasan pelanggan, dan nambah profitabilitas.

Jadi, siapkan laptopmu, dan yuk mulai eksplorasi seru ini buat menerapkan analisis segmentasi pelanggan secara praktis! 🚀

Studi Kasus: Deskripsi Masalah

Sebuah perusahaan e-commerce yang bergerak di bidang penjualan barang-barang konsumsi ingin meningkatkan efektivitas strategi pemasarannya. Seiring dengan semakin ketatnya persaingan di dunia digital, perusahaan menyadari bahwa pendekatan pemasaran yang bersifat umum sudah tidak lagi cukup efektif. Oleh karena itu, mereka ingin lebih memahami perilaku pelanggan agar dapat menyusun strategi yang lebih tepat sasaran, baik untuk meningkatkan loyalitas pelanggan yang sudah ada maupun untuk mengurangi tingkat churn atau pelanggan yang tidak kembali berbelanja.

Perusahaan ini telah mengumpulkan data transaksi pelanggan yang mencakup berbagai informasi penting, seperti nomor faktur yang mengidentifikasi setiap transaksi, kode produk dan deskripsi produk yang dibeli, jumlah barang yang dibeli, tanggal transaksi, harga per unit, ID pelanggan, serta negara asal pelanggan. Dengan data ini, perusahaan berharap dapat mengidentifikasi pola belanja pelanggan untuk membantu pengambilan keputusan yang lebih baik dalam strategi pemasaran.

Saat ini, manajemen telah menerapkan analisis RFM (Recency, Frequency, Monetary) untuk memahami pelanggan berdasarkan seberapa baru mereka terakhir kali berbelanja, seberapa sering mereka melakukan transaksi, dan seberapa besar nilai total pembeliannya. Namun, meskipun analisis RFM sudah memberikan wawasan dasar mengenai pola belanja pelanggan, manajemen merasa bahwa pendekatan ini masih memiliki keterbatasan. Mereka ingin melakukan analisis segmentasi pelanggan yang lebih mendalam agar dapat mengoptimalkan strategi pemasaran berdasarkan kategori pelanggan yang lebih spesifik.

Yuk, kita bantu perusahaan ini menganalisis data mereka dengan analisis segmentasi pelanggan! Datanya bisa diakses di sini ya! Data yang akan kita gunakan bersumber dari KDNuggets yang dipublikasi tahun 2023. Namun, data ini telah dimodifikasi dengan melakukan pengurangan jumlah data serta telah dilakukan penanganan pada data sehingga kita dapat lebih fokus ke analisis.

Analisis dan Pembahasan Segmentasi Pelanggan menggunakan Python

Pada tahap ini kita akan melanjutkan analisis RFM pada artikel sebelumnya yang berjudul “Analisis RFM (Recency, Frequency, Monetary) : Tutorial“. Jadi harus banget nih baca artikel sebelumnya.

Kalau sudah baca artikel sebelumnya, mari kita mulai analisis segmentasinya !

Berikut ini analisis segmentasi pelanggan menggunakan python yang harus kita ikuti. Yuk simak secara seksama !

Langkah 1 : Import Library yang Dibutuhkan

Library yang kita butuhkan untuk analisis segmentasi pelanggan sebagai berikut :

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

Jadi, di sini kita pakai tiga library utama buat analisis segmentasi. Pandas itu kayak alat buat baca, ngolah, dan analisis segmentasi data dalam bentuk tabel, mirip Excel tapi lebih fleksibel buat coding. Matplotlib.pyplot dipakai buat bikin grafik atau visualisasi data biar lebih gampang dipahami dalam proses analisis segmentasi. Terakhir, ada KMeans dari sklearn.cluster, ini dipakai buat melakukan clustering atau pengelompokan data. Dengan K-Means, kita bisa cari pola di dalam data dan melakukan analisis segmentasi dengan membagi pelanggan ke dalam beberapa segmen berdasarkan kemiripan mereka.

Langkah 2 : Ambil Data RFM Untuk Clustering

Karena analisis segmentasi pelanggan yang kita lakukan menggunakan data RFM, maka pada tahap ini kita harus mengambil data RFM yang telah dihitung pada tutorial sebelumnya untuk Clustering

# Ekstrak skor RFM untuk clustering K-Means
X = rfm[['R_Score', 'F_Score', 'M_Score']]

Kode tersebut digunakan untuk mengekstrak nilai RFM (Recency, Frequency, Monetary) dari dataset rfm, yang nantinya akan digunakan dalam proses clustering dengan K-Means. Dalam kode ini, kita hanya mengambil tiga kolom, yaitu R_score, F_score, dan M_score, yang masing-masing merepresentasikan seberapa baru pelanggan terakhir membeli (Recency), seberapa sering pelanggan melakukan pembelian (Frequency), dan seberapa banyak uang yang mereka keluarkan (Monetary). Nilai-nilai ini kemudian disimpan dalam variabel X agar bisa langsung digunakan dalam algoritma K-Means. Pemilihan skor RFM ini penting karena K-Means bekerja lebih baik dengan data numerik yang memiliki skala sebanding, dan skor RFM sudah distandarisasi dalam rentang yang sama, sehingga tidak memerlukan normalisasi tambahan sebelum dilakukan clustering.

Langkah 3: Cari Jumlah Cluster yang Optimal (Elbow Method)

Tahap selanjutnya untuk analisis segmentasi pelanggan dengan menggunakan K-Means adalah mencari jumlah cluster yang optimal dengan menggunakan metode Elbow. Kita bisa menggunakan sintaks dibawah ini

# Hitung inertia (jumlah kuadrat jarak) untuk berbagai nilai k
inertia = []
for k in range(2, 11):
    kmeans = KMeans(n_clusters=k, n_init= 10, random_state=42)
    kmeans.fit(X)
    inertia.append(kmeans.inertia_)

# Plot kurva elbow
plt.figure(figsize=(8, 6),dpi=150)
plt.plot(range(2, 11), inertia, marker='o')
plt.xlabel('Number of Clusters (k)')
plt.ylabel('Inertia')
plt.title('Elbow Curve for K-means Clustering')
plt.grid(True)
plt.show()

Kode diatas dipakai buat nentuin jumlah klaster yang paling optimal menggunakan metode Elbow. Pertama, kita coba jalankan K-Means dengan jumlah klaster dari 2 sampai 10. Setiap kali model dijalankan, kita simpan nilai inertia (total jarak kuadrat dari tiap titik ke pusat klasternya). Nah, inertia ini bakal makin kecil kalau jumlah klasternya makin banyak, tapi ada titik di mana penurunannya mulai melambat—itulah “elbow point”, alias jumlah klaster yang paling pas. Hasilnya diplot dalam grafik Elbow, di mana kita bisa lihat di titik mana grafiknya mulai “siku”, lalu pakai jumlah klaster tersebut buat clustering. Kode diatas menghasilkan output sebagai berikut

analisis segmentasi

Dari grafik Elbow, siku atau titik elbow terlihat berada di sekitar K = 4. Itu adalah titik di mana penurunan nilai inertia mulai melambat, yang biasanya menjadi indikasi jumlah klaster optimal dalam K-Means.

Jadi, berdasarkan grafik ini, K yang optimal kemungkinan besar adalah 4.

Langkah 4 : Lakukan K-Means Clustering dengan K=4

Karena kita udah tau jumlah cluster yang optimal, sekarang kita jalankan analisis segmentasi menggunakan K-Means dengan K=4 buat bagi pelanggan ke dalam 4 kelompok.

# Jalankan K-Means clustering dengan K terbaik
best_kmeans = KMeans(n_clusters=4, n_init=10, random_state=42)
rfm['Cluster'] = best_kmeans.fit_predict(X)

Kode ini dipakai buat ngejalanin clustering K-Means dengan jumlah klaster terbaik yang udah ditentukan, yaitu 4 klaster. Jadi, model K-Means ini bakal ngelompokkan pelanggan jadi 4 grup berdasarkan pola belanja pelanggan. Nah, n_init=10 artinya model bakal dijalankan 10 kali dengan pusat klaster yang berbeda-beda biar hasilnya lebih optimal. Terus, ada juga random_state=42, yang dipakai supaya hasilnya tetap sama kalau dijalankan lagi. Setelah itu, metode fit_predict(x) dipakai buat nge-training model pakai data RFM dan otomatis nentuin pelanggan masuk ke klaster mana. Hasilnya disimpan di kolom ‘Cluster’ di dataset rfm, jadi tiap pelanggan udah punya label segmennya masing-masing.

Langkah 5 : Interpretasi Hasil Clustering

Sekarang kita udah punya hasil clustering, saatnya kita pahami tiap segmen pelanggan berdasarkan rata-rata skor RFM mereka melalui analisis segmentasi. Dengan analisis segmentasi, kita bisa melihat pola perilaku tiap kelompok pelanggan dan menentukan strategi yang paling efektif untuk masing-masing segmen. Analisis segmentasi ini juga membantu dalam memahami bagaimana pelanggan berinteraksi dengan bisnis, sehingga kita bisa lebih tepat dalam menawarkan promosi, meningkatkan loyalitas, dan mengoptimalkan pengalaman belanja mereka.

# Hitung rata-rata skor RFM per cluster
cluster_summary = rfm.groupby('Cluster').agg({
    'R_Score': 'mean',
    'F_Score': 'mean',
    'M_Score': 'mean'
}).reset_index()

# Lihat hasilnya
print(cluster_summary)

Dari kode diatas ita mendapatkan output sebagai berikut

Dari sini kita bisa lihat pola tiap cluster melalui analisis segmentasi. Tapi biar makin jelas, yuk kita visualisasikan! Dengan analisis segmentasi, kita bisa lebih mudah memahami perbedaan antar kelompok pelanggan dan melihat tren yang mungkin nggak langsung terlihat dari angka-angka saja. Visualisasi ini akan membantu kita dalam mengambil keputusan yang lebih tepat berdasarkan hasil analisis segmentasi yang sudah kita lakukan.

colors = ['#A7C7E7', '#A8E6CF', '#FFD3B6', '#D4A5A5']

# Plot rata - rata skor RFM untuk setiap cluster
plt.figure(figsize=(10, 8),dpi=150)

# Plot rata - rata Recency
plt.subplot(3, 1, 1)
bars = plt.bar(cluster_summary.index, cluster_summary['R_Score'], color=colors)
plt.xlabel('Cluster')
plt.ylabel('Avg Recency')
plt.title('Average Recency for Each Cluster')

plt.grid(True, linestyle='--', alpha=0.5)
plt.legend(bars, cluster_summary.index, title='Clusters')

# Plot rata - rata Frequency
plt.subplot(3, 1, 2)
bars = plt.bar(cluster_summary.index, cluster_summary['F_Score'], color=colors)
plt.xlabel('Cluster')
plt.ylabel('Avg Frequency')
plt.title('Average Frequency for Each Cluster')
plt.grid(True, linestyle='--', alpha=0.5)
plt.legend(bars, cluster_summary.index, title='Clusters')

# Plot rata - rata Monetary
plt.subplot(3, 1, 3)
bars = plt.bar(cluster_summary.index, cluster_summary['M_Score'], color=colors)
plt.xlabel('Cluster')
plt.ylabel('Avg Monetary')
plt.title('Average Monetary Value for Each Cluster')
plt.grid(True, linestyle='--', alpha=0.5)
plt.legend(bars, cluster_summary.index, title='Clusters')

plt.tight_layout()
plt.show()

Kode ini digunakan untuk menampilkan rata-rata skor RFM (Recency, Frequency, Monetary) dari tiap cluster hasil K-Means dalam bentuk bar chart dengan warna-warna soft. Grafik dibuat dalam tiga subplot, masing-masing merepresentasikan Recency (seberapa lama sejak terakhir belanja), Frequency (seberapa sering belanja), dan Monetary (total pengeluaran rata-rata). Setiap cluster diberi warna berbeda agar mudah dibedakan, lalu ditambahkan label, judul, grid, serta legenda supaya lebih informatif. Akhirnya, plt.tight_layout() digunakan agar tampilan rapi dan tidak bertumpuk sebelum grafik ditampilkan dengan plt.show(). Tujuan dari visualisasi ini adalah untuk memahami karakteristik pelanggan di tiap cluster, sehingga bisa digunakan dalam strategi pemasaran yang lebih tepat sasaran.

Dari kode di atas kita mendapatkan output sebagai berikut

analisis segmentasi

Dari visualisasi di atas, kita bisa melihat perbedaan rata-rata skor Recency, Frequency, dan Monetary untuk masing-masing cluster. Oleh karena itu kita dapat melabelkan cluster tersebut sebagai berikut

Cluster 0 memiliki skor Recency terendah, yang berarti pelanggan di cluster ini sudah cukup lama tidak melakukan transaksi, dengan skor Frequency dan Monetary juga rendah, mengindikasikan bahwa mereka tidak terlalu sering berbelanja. Oleh karena itu, Cluster 0 akan akan dilabelkan dengan at-risk customers.

Cluster 1 memiliki skor Recency, Frequency, dan Monetary tertinggi, yang menunjukkan bahwa pelanggan di cluster ini adalah yang paling aktif dan sering berbelanja dengan nilai transaksi yang tinggi. Oleh karena itu, Cluster 1 akan akan dilabelkan dengan champions (or power shoppers).

Cluster 2 memiliki skor Recency yang cukup tinggi, tetapi skor Frequency dan Monetary lebih rendah, menunjukkan bahwa pelanggan di cluster ini baru saja berbelanja namun belum memiliki pola pembelian yang rutin. Oleh karena itu, Cluster 2 akan akan dilabelkan dengan Potential Loyalists.

Cluster 3 berada di posisi menengah dengan skor Recency yang lebih rendah dari Cluster 2, tetapi skor Frequency dan Monetary yang lebih tinggi, menandakan bahwa mereka lebih sering bertransaksi dibanding Cluster 2 tetapi mungkin sudah tidak terlalu aktif belakangan ini. Dari hasil ini, strategi pemasaran bisa disesuaikan untuk mendorong pelanggan yang kurang aktif agar lebih sering berbelanja, serta mempertahankan pelanggan yang sudah aktif agar tetap loyal. Oleh karena itu, Cluster 3 akan akan dilabelkan dengan loyal customers.

Kita juga bisa lihat berapa persen pelanggan masuk ke tiap segmen menggunakan pie chart.

cluster_counts = rfm['Cluster'].value_counts()

colors = ['#A7C7E7', '#A8E6CF', '#FFD3B6', '#D4A5A5']
# Menghitung total customers
total_customers = cluster_counts.sum()

# Menghitung presentase customers pada setiap cluster
percentage_customers = (cluster_counts / total_customers) * 100

labels = ['At-risk Customers','Champions(Power Shoppers)', 'Potential Loyalists', 'Loyal Customers']

# Membuat pie chart
plt.figure(figsize=(8, 8),dpi=200)
plt.pie(percentage_customers, labels=labels, autopct='%1.1f%%', startangle=90, colors=colors)
plt.title('Percentage of Customers in Each Cluster')
plt.legend(cluster_summary['Cluster'], title='Cluster', loc='upper left')

plt.show()

Kode ini digunakan buat bikin pie chart yang menunjukkan persentase pelanggan di setiap cluster hasil K-Means. Pertama, jumlah pelanggan di tiap cluster dihitung pakai value_counts(), lalu persentasenya didapat dengan membagi jumlah pelanggan per cluster dengan total pelanggan. Setiap cluster diberi label yang sesuai, seperti Champions, Loyal Customers, At-risk Customers, dan Potential Loyalists. Warna yang dipilih lembut supaya enak dilihat. Pie chart ini membantu kita memahami sebaran pelanggan di tiap segmen, yang bisa dipakai buat strategi pemasaran yang lebih tepat.

Dari kode di atas kita mendapatkan output sebagai berikut

analisis segmentasi

Grafik ini menampilkan segmentasi pelanggan berdasarkan analisis RFM (Recency, Frequency, Monetary). Segmentasi ini penting untuk memahami perilaku pelanggan dan menerapkan strategi pemasaran yang tepat.

1. At-risk Customers (Cluster 0) – 29.1%

Karakteristik:

  • Sudah lama tidak berbelanja (skor Recency rendah).
  • Jarang melakukan transaksi (skor Frequency rendah).
  • Nilai belanja mereka juga kecil (skor Monetary rendah).

Strategi yang bisa diterapkan:

  • Reaktivasi pelanggan dengan email promosi, diskon, atau voucher khusus.
  • Mengingatkan mereka tentang produk favorit mereka atau memberikan penawaran eksklusif.
  • Kampanye loyalitas atau program referral untuk mendorong mereka kembali berbelanja.

2. Champions (Power Shoppers) (Cluster 1) – 27.3%

Karakteristik:

  • Pelanggan paling aktif, sering berbelanja dan memiliki nilai transaksi tinggi.
  • Baru saja melakukan transaksi (skor Recency tinggi).
  • Mereka sering kembali untuk berbelanja lagi (skor Frequency tinggi).

Strategi yang bisa diterapkan:

  • Berikan reward eksklusif, seperti diskon VIP, akses awal ke produk baru, atau program loyalitas.
  • Upselling & cross-selling dengan merekomendasikan produk yang relevan.
  • Buat mereka merasa spesial dengan layanan pelanggan premium atau personalisasi pengalaman belanja.

3. Potential Loyalists (Cluster 2) – 23.0%

Karakteristik:

  • Baru saja berbelanja (skor Recency tinggi).
  • Frekuensi belanja dan nilai transaksi masih rendah, artinya mereka belum terlalu aktif.
  • Berpotensi menjadi pelanggan setia jika diberikan dorongan yang tepat.

Strategi yang bisa diterapkan:

  • Kirimkan email follow-up untuk mendorong pembelian berikutnya.
  • Tawarkan promo khusus pelanggan baru agar mereka tertarik melakukan transaksi lagi.
  • Gunakan iklan retargeting untuk mengingatkan mereka tentang produk yang pernah dilihat atau dibeli.

4. Loyal Customers (Cluster 3) – 20.7%

Karakteristik:

  • Sering berbelanja dengan nilai transaksi cukup baik (skor Frequency & Monetary sedang-tinggi).
  • Tidak seaktif Champions, tetapi lebih aktif dibanding Potential Loyalists.
  • Mereka bisa jadi pernah sangat aktif, tetapi sedikit berkurang belakangan ini.

Strategi yang bisa diterapkan:

  • Tawarkan insentif agar mereka tetap setia, seperti diskon eksklusif atau program berlangganan.
  • Gunakan email personalisasi dengan rekomendasi produk berdasarkan histori belanja.
  • Ajak mereka ikut serta dalam program review atau testimoni untuk meningkatkan engagement.

Kesimpulan

Jadi, dari analisis segmentasi pelanggan ini, kita bisa lihat kalau setiap kelompok pelanggan punya karakteristik yang beda-beda, jadi cara pendekatannya juga harus disesuaikan. At-risk Customers itu pelanggan yang udah lama nggak belanja, jadi perlu strategi retensi biar mereka balik lagi, misalnya kasih promo khusus atau diskon personal. Champions adalah pelanggan paling loyal dan sering belanja, jadi harus dipertahankan dan dihargai, misalnya dengan program loyalitas atau akses eksklusif ke produk baru.

Nah, Potential Loyalists ini sebenarnya punya potensi jadi pelanggan tetap, tapi mereka masih belum rutin belanja. Makanya, perlu strategi yang bikin mereka makin tertarik, seperti promo menarik atau pengalaman belanja yang lebih personal. Sedangkan Loyal Customers itu mereka yang udah cukup sering belanja, tapi nggak seaktif Champions. Biar mereka nggak pindah ke kompetitor, harus ada strategi engagement yang lebih kuat, misalnya rekomendasi produk yang sesuai atau insentif khusus.

Dengan memahami segmentasi pelanggan ini, bisnis bisa lebih fokus dalam menerapkan strategi yang tepat buat tiap kelompok pelanggan. Nggak cuma bisa ningkatin penjualan, tapi juga bisa bikin pelanggan makin loyal dan akhirnya bikin bisnis tumbuh lebih besar!

Referensi

Jamal, J., & Yanto, D. (2019). Analisis RFM dan Algoritma K-Means untuk Clustering Loyalitas CustomerEnergy: Jurnal Ilmiah Ilmu-Ilmu Teknik9(1), 18-27.

KDNuggets. (2023). Customer segmentation in Python: A practical approach. Diakses pada 11 Maret 2025, dari https://www.kdnuggets.com/customer-segmentation-in-python-a-practical-approach

Firmansah, R. Y., Irawan, J. D., & Vendyansyah, N. (2021). Analisis RFM (Recency, Frequency and Monetary) Produk Menggunakan Metode K-MeansJATI (Jurnal Mahasiswa Teknik Informatika)5(1), 334-341.

Sampai di sini dulu penjelasan terkait Analisis Segmentasi Pelanggan dengan Python. Apabila sobat Exsight masih ada yang dibingungkan terkait pembahasan pada artikel ini, bisa langsung saja ramaikan kolom komentar atau hubungi admin melalui tombol bantuan di kanan bawah. Stay tuned di website https://exsight.id/blog/ agar tidak ketinggalan artikel-artikel menarik lainnya. See you in the next article yaa!

Sstt...
Mau Kiriman Artikel Terbaru Exsight
Tanpa Biaya Langganan? ????

Nama Kamu

Email Kamu

Dapatkan Akses Informasi Terupdate Seputar Dunia Data dan Statistika 🙂

Exsight ADS

Leave a Comment