Tableau DashboardPerusahaan e-commerce menghasilkan ratusan ribu transaksi setiap tahun. Namun, volume data yang besar tidak otomatis menghasilkan keputusan bisnis yang lebih baik. Dibutuhkan proses analisis yang sistematis untuk mengubah data transaksi menjadi insight yang dapat digunakan dalam pengambilan keputusan.
Pada artikel ini saya membangun proyek end-to-end data analytics menggunakan dataset Online Retail dari Kaggle yang berisi lebih dari 541 ribu transaksi. Tujuan analisis adalah memahami performa penjualan, perilaku pelanggan, serta menghasilkan rekomendasi bisnis berbasis data menggunakan gabungan analisis SQL, Python, Tableau, dan Customer Segmentation.
Dalam persaingan e-commerce yang ketat, promosi yang seragam kepada seluruh pelanggan sering kali menyebabkan pembengkakan anggaran pemasaran dan rendahnya retensi. Agar perusahaan dapat mengoptimalkan profitabilitas dan alokasi stok, analisis ini dirancang untuk menjawab enam pertanyaan bisnis utama:
Dari pertanyaan bisnis tersebut, proyek ini memiliki lima sasaran obyektif yang terukur:
Dataset yang digunakan memuat riwayat transaksi ritel online di Britania Raya sepanjang periode Desember 2010 hingga Desember 2011. Untuk memahami dimensi dataset secara cepat, ekstraksi metrik awal dilakukan menggunakan kueri SQL:
-- Kueri SQL: Metrik Ikhtisar Dataset E-Commerce
SELECT
COUNT(*) AS total_rows,
COUNT(DISTINCT InvoiceNo) AS total_invoice,
COUNT(DISTINCT CustomerID) AS total_customer,
COUNT(DISTINCT StockCode) AS total_product,
COUNT(DISTINCT Country) AS total_country
FROM ecommerce;
| Informasi Metrik | Nilai Aktual / Keterangan |
|---|---|
| Total Rows | 541.909 baris transaksi |
| Total Invoice | 25.900 faktur unik |
| Total Customer | 4.372 pelanggan unik |
| Total Product | 4.070 SKU produk unik |
| Total Country | 38 negara asal pembeli |
Narasi Analisis: Kueri di atas digunakan sebagai verifikasi awal skala observasi. Insight awalnya menunjukkan bahwa dari 541 ribu baris transaksi, terdapat sebaran 4.372 pelanggan unik dan 4.070 produk, yang menandakan rata-rata aktivitas pembelian berulang per pelanggan cukup tinggi sepanjang tahun.
Sebelum melakukan pembersihan data, observasi lanjutan dilakukan untuk memeriksa rentang waktu transaksi serta struktur tipe kolom menggunakan SQL dan Python:
-- Kueri SQL: Memeriksa Rentang Periode Transaksi
SELECT
MIN(InvoiceDate) AS earliest_transaction,
MAX(InvoiceDate) AS latest_transaction
FROM ecommerce;
Hasil Periode: Transaksi tercatat mulai dari 1 Desember 2010 hingga 9 Desember 2011 (observasi 1 tahun penuh).
# Potongan Kode Python: Pemeriksaan Struktur & Statistik Deskriptif Awal
df.info()
df.describe()
df.head()
Melalui keluaran df.info() dan df.describe(), terungkap indikasi anomali awal: nilai minimum pada kolom Quantity dan UnitPrice bernilai negatif, serta terdapat kejanggalan pada ribuan baris dengan CustomerID bernilai kosong (NULL).
Inilah tahapan paling menarik yang memperlihatkan cerita investigasi dan validasi analitis sebelum data siap dimodelkan:
SELECT COUNT(*) FROM ecommerce WHERE CustomerID IS NULL;
SELECT * FROM ecommerce WHERE InvoiceNo LIKE 'C%';
Quantity < 0. Namun, saat diinvestigasi lebih lanjut, tidak semua Quantity negatif diawali huruf 'C'. Terdapat ribuan baris bernilai negatif dengan faktur reguler atau kode anomali sistem (seperti deskripsi *'damaged'*, *'lost'*, atau *'check'*).
SELECT * FROM ecommerce WHERE UnitPrice <= 0;
UnitPrice = 0 yang merupakan sampel gratis atau kesalahan log sistem, serta sejumlah kecil nilai harga negatif (utang/penyesuaian bank).
UnitPrice ≤ 0 dihapus dari tabel pemodelan pendapatan (Revenue Analytics).
SELECT *, COUNT(*) OVER(PARTITION BY InvoiceNo, StockCode, CustomerID) duplicate_count FROM ecommerce;
duplicate_count > 1. Namun dalam bisnis ritel, duplikat belum tentu salah; seorang pelanggan sah saja membeli SKU produk yang sama dua kali dalam satu faktur jika item di-scan terpisah.
Di tahap ini, pemrosesan didominasi menggunakan kode Python (Pandas) untuk menyaring observasi bersih dan membentuk variabel baru yang siap diringkas:
# Potongan Kode Python: Preprocessing & Feature Engineering
df = df[df['Quantity'] > 0]
df = df[df['UnitPrice'] > 0]
df['Revenue'] = df['Quantity'] * df['UnitPrice']
df['InvoiceDate'] = pd.to_datetime(df['InvoiceDate'])
Alasan Preprocessing: Pemilihan kondisi Quantity > 0 dan UnitPrice > 0 menyingkirkan pembatalan, anomali stok, dan barang sampel. Pembuatan kolom baru Revenue secara langsung mempermudah agregasi pendapatan tanpa komputasi perkalian berulang pada tahap visualisasi.
Berikut adalah 8 analisis eksploratif dominan Python dengan pola konsisten untuk membedah kinerja bisnis:
monthly_revenue = df.groupby(df['InvoiceDate'].dt.to_period('M'))['Revenue'].sum()
top_product = df.groupby('Description')['Revenue'].sum().sort_values(ascending=False).head(10)
country = df.groupby('Country')['Revenue'].sum().sort_values(ascending=False)
df['Hour'] = df['InvoiceDate'].dt.hour
peak_hour = df.groupby('Hour')['InvoiceNo'].nunique()
df['Day'] = df['InvoiceDate'].dt.day_name()
day_analysis = df.groupby('Day')['Revenue'].sum()
customer = df.groupby('CustomerID')['Revenue'].sum().sort_values(ascending=False).head(10)
basket = df.groupby('InvoiceNo')['Quantity'].sum()
aov = df.groupby('InvoiceNo')['Revenue'].sum().mean()
Bagian ini memanfaatkan Python untuk visualisasi dan verifikasi distribusi statistik secara mendalam:
Histogram sebaran pendapatan memperlihatkan distribusi yang sangat condong ke kanan (right-skewed). Ini membuktikan bahwa bisnis e-commerce ini didorong oleh pola pembelian dengan variasi nilai yang luas antara konsumen ritel tangga dengan pembeli grosir.
Analisis distribusi kumulatif membuktikan hukum Pareto yang sangat tajam di dalam dataset ini:
# Potongan Kode Python: Pareto Customer Revenue Analysis
customer_rev = df.groupby('CustomerID')['Revenue'].sum().sort_values(ascending=False)
pareto_percentage = customer_rev.cumsum() / customer_rev.sum() * 100
Hasil Statistik Pareto: Terbukti bahwa 26% dari total pelanggan menyumbang tepat 80% dari total pendapatan perusahaan. Hal ini memvalidasi bahwa efisiensi iklan terbesar berada pada upaya menjaga kepuasan segmen 26% tersebut.
Heatmap korelasi Spearman menunjukkan korelasi sangat positif antara frekuensi kedatangan (Frequency) dengan total moneter belanja (Monetary). Sementara itu, evaluasi Boxplot pada kolom pengeluaran membuktikan bahwa outlier bernilai tinggi merupakan transaksi sah dari mitra B2B berulang dan bukan kesalahan entri.
Penerapan algoritma Machine Learning di sini bertujuan untuk mengelompokkan 4.372 pelanggan ke dalam klaster perilaku secara algoritmik dan objektif:
# Potongan Kode Python: Ekstraksi Variabel RFM
import datetime as dt
snapshot_date = df['InvoiceDate'].max() + dt.timedelta(days=1)
rfm = df.groupby('CustomerID').agg({
'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
'InvoiceNo': 'nunique',
'Revenue': 'sum'
}).rename(columns={'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'Revenue': 'Monetary'})
# Potongan Kode Python: Feature Scaling & K-Means Clustering
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
scaler = StandardScaler()
rfm_scaled = scaler.fit_transform(rfm)
kmeans = KMeans(n_clusters=4, random_state=42)
rfm['Cluster'] = kmeans.fit_predict(rfm_scaled)
cluster_summary = rfm.groupby('Cluster').mean()
Cluster Summary: Output K-Means menghasilkan 4 klaster utama: Champions (VIP) dengan kontribusi moneter tertinggi dan recency terendah, Loyal Customers dengan transaksi stabil, At-Risk yang sudah lama tidak kembali bertransaksi, dan Hibernating dengan tingkat engagement terendah.
Seluruh pemrosesan SQL dan hasil klasterisasi Python diintegrasikan ke dalam Tableau Dashboard eksekutif. Dashboard ini menyajikan KPI waktu nyata seperti Total Revenue, Jumlah Orders, Average Order Value (AOV), serta visualisasi interaktif pergerakan segmen pelanggan RFM.
Hasil sintesis dari seluruh tahap eksplorasi dan segmentasi merumuskan empat rekomendasi operasional bagi manajemen:
Implementasi analisis berbasis data ini berpotensi memberikan dampak transformasi bisnis yang terukur:
Proyek analisis data e-commerce ini membuktikan bahwa pengolahan data transaksi yang sistematis—melalui pembersihan SQL, eksplorasi EDA, validasi statistik Pareto, dan segmentasi K-Means—mampu memberikan visibilitas yang utuh atas perilaku pasar. Metodologi ini memberdayakan perusahaan untuk beralih dari keputusan berbasis asumsi menuju strategi pemasaran berbasis data yang berorientasi pada efisiensi dan pertumbuhan laba.