Artikel ini mendokumentasikan proses analisis data end-to-end — dari pemahaman dataset, data cleaning, eksplorasi, hingga rekomendasi bisnis. Cocok dijadikan referensi portofolio Junior Data Analyst.
🧭 Background: Mengapa Analisis Ini Penting?
Perusahaan retail modern menghasilkan ribuan transaksi setiap bulannya. Tanpa analisis yang tepat, data tersebut hanya menjadi angka-angka tak bermakna di dalam spreadsheet. Pertanyaan bisnis yang sering muncul di level manajemen adalah:
- Produk mana yang paling menguntungkan?
- Apakah program diskon kita benar-benar efektif?
- Kapan waktu terbaik untuk meningkatkan stok?
- Kategori mana yang perlu mendapat perhatian lebih?
Sebagai Junior Data Analyst, tugas saya adalah menjawab pertanyaan-pertanyaan tersebut menggunakan data — secara sistematis, akurat, dan mudah dikomunikasikan kepada manajemen.
Dalam artikel ini, saya akan membawa kamu melalui seluruh proses analisis dataset retail dengan 12,418 transaksi selama 3 tahun (2022–2025).
📦 Dataset yang Digunakan
Dataset yang digunakan adalah Data_Retail.xlsx — dataset transaksi retail internal yang mencakup berbagai kategori produk dari makanan hingga elektronik.
Spesifikasi Dataset
| Atribut | Detail |
|---|---|
| Jumlah baris | 12,418 transaksi |
| Jumlah kolom | 15 variabel |
| Periode | Januari 2022 – Januari 2025 |
| Sumber | Dataset internal perusahaan retail |
Variabel Kunci
Transaction_id → ID unik transaksi
Category → 8 kategori produk
Sub-Category → Lebih dari 100 sub-item
Sales → Nilai penjualan (Rp)
Profit → Estimasi profit = 20% dari Sales
Discount_Value → 0.0 (tanpa diskon) atau 0.2 (diskon 20%)
Payment_Method → Cash / Credit Card / Digital Wallet
Location → Online / In-store
Transaction_Date → Tanggal transaksi
Region → East / West / Central (⚠️ dummy data)
Penting: Dua hal perlu dicatat sejak awal — (1) kolom
Regionadalah dummy data dan tidak mencerminkan lokasi geografis nyata, dan (2) kolomProfitadalah estimasi tetap 20% dari Sales, bukan profit aktual yang memperhitungkan biaya operasional.
🧹 Proses Data Cleaning
Langkah pertama sebelum analisis adalah memastikan kualitas data. Saya menggunakan Python (pandas) untuk proses ini.
import pandas as pd
# Load dataset
df = pd.read_excel('Data_Retail.xlsx')
# 1. Cek ukuran dataset
print(f"Shape: {df.shape}")
# Output: (12418, 15)
# 2. Cek missing values
print(df.isnull().sum())
# Output: Semua 0 — tidak ada missing value
# 3. Cek duplikasi
print(f"Duplicates: {df.duplicated().sum()}")
# Output: 0 — tidak ada duplikat
# 4. Konversi format tanggal
df['Transaction_Date'] = pd.to_datetime(df['Transaction_Date'])
# 5. Ekstraksi fitur waktu
df['Year'] = df['Transaction_Date'].dt.year
df['Month_Num'] = df['Transaction_Date'].dt.month
# 6. Validasi nilai numerik
print(df[['Sales', 'Profit', 'Price_per_unit']].describe())
Ringkasan Hasil Cleaning
| Pemeriksaan | Hasil |
|---|---|
| Missing values | ✅ 0 — dataset lengkap |
| Duplikasi baris | ✅ 0 — tidak ada duplikat |
| Format tanggal | ✅ Berhasil dikonversi ke datetime |
| Nilai negatif | ✅ Tidak ditemukan pada Sales & Profit |
| Konsistensi kategori | ✅ 8 kategori, penulisan konsisten |
| Nilai Discount_Value | ✅ Hanya 0.0 dan 0.2 — sesuai ekspektasi |
Kesimpulan: Dataset sudah dalam kondisi bersih dan siap dianalisis tanpa memerlukan imputasi atau koreksi data yang signifikan.
🔍 Exploratory Data Analysis (EDA)
Visualisasi 1 — Sales by Region
sales_region = df.groupby('Region')[['Sales','Profit']].sum().sort_values('Sales', ascending=False)
print(sales_region)
Hasil:

| Region | Sales (Rp) | Profit (Rp) | % Kontribusi |
|---|---|---|---|
| East | 680,757 | 136,151 | 43.8% |
| West | 517,519 | 103,504 | 33.3% |
| Central | 357,285 | 71,457 | 23.0% |
Insight: Region East mendominasi penjualan dengan kontribusi 43.8% dari total sales. Namun karena region adalah dummy data, temuan ini lebih mencerminkan distribusi data daripada performa wilayah geografis yang sesungguhnya.
Pertanyaan kritis: Apakah sales tinggi = profit tinggi? Dalam dataset ini, ya — karena profit adalah 20% flat dari sales. Dalam bisnis nyata, relasi ini bisa jauh lebih kompleks.
Visualisasi 2 — Profit by Category
profit_cat = df.groupby('Category')[['Sales','Profit']].sum().sort_values('Profit', ascending=False)
print(profit_cat)
Hasil:

| Category | Sales (Rp) | Profit (Rp) |
|---|---|---|
| Butchers | 204,140 | 40,828 |
| Electric Household | 203,261 | 40,652 |
| Computers & Electric | 197,491 | 39,498 |
| Food | 196,326 | 39,265 |
| Beverages | 195,561 | 39,112 |
| Furniture | 191,426 | 38,285 |
| Patisserie | 184,615 | 36,923 |
| Milk Products | 182,741 | 36,548 |
Insight: Selisih profit antar kategori relatif kecil (Rp 40,828 vs Rp 36,548). Ini wajar karena margin ditetapkan seragam 20%. Yang membedakan adalah volume sales per kategori — Butchers dan Electric Household unggul karena volume transaksinya lebih tinggi.
Visualisasi 3 — Discount vs Profit Analysis
disc_analysis = df.groupby('Discount_Value')[['Sales','Profit']].agg(['count','sum','mean'])
print(disc_analysis)
Hasil:

| Tipe Diskon | Jumlah Txn | % Txn | Total Sales | Total Profit | Avg Profit/Txn |
|---|---|---|---|---|---|
| Tanpa Diskon (0%) | 4,107 | 33.1% | 516,356 | 103,271 | 25.15 |
| Dengan Diskon (20%) | 8,311 | 66.9% | 1,039,205 | 207,841 | 25.01 |
Insight: Transaksi dengan diskon 20% mencapai 66.9% dari total transaksi — jauh lebih banyak dari transaksi tanpa diskon. Ini menunjukkan bahwa diskon sangat efektif mendorong pembelian. Rata-rata profit per transaksi hampir identik (Rp 25.15 vs Rp 25.01) karena profit ditetapkan sebagai persentase sales.
Visualisasi 4 — Top 10 Sub-Category by Sales

top10 = df.groupby('Sub-Category')['Sales'].sum().sort_values(ascending=False).head(10)
print(top10)
Hasil:
| Rank | Sub-Category | Sales (Rp) |
|---|---|---|
| 🥇 1 | Item_2_BEV | 145,446 |
| 2 | Item_25_FUR | 21,976 |
| 3 | Item_22_BUT | 19,710 |
| 4 | Item_25_EHE | 19,393 |
| 5 | Item_20_BUT | 18,861 |
| 6 | Item_19_MILK | 18,848 |
| 7 | Item_19_CEA | 17,856 |
| 8 | Item_20_FOOD | 17,487 |
| 9 | Item_25_BUT | 17,384 |
| 10 | Item_16_MILK | 17,243 |
Insight paling mengejutkan: Item_2_BEV (Beverages) menghasilkan sales Rp 145,446 — hampir 6.6× lebih besar dari sub-kategori peringkat kedua (Rp 21,976). Ini adalah “outlier positif” yang luar biasa dan layak menjadi fokus strategi penjualan.
Visualisasi 5 — Monthly Sales Trend

monthly = df.groupby(['Year', 'Month_Num', 'Month'])['Sales'].sum().reset_index()
monthly = monthly.sort_values(['Year', 'Month_Num'])
Temuan Trend:
Puncak Tertinggi : Januari 2022 → Rp 52,549
Terendah (lengkap): Oktober 2022 → Rp 38,309
Desember 2024 : Rp 48,933 (tertinggi sepanjang 2024)
Rata-rata bulanan : ~Rp 43,209 per bulan
Pola yang teridentifikasi:
- Sales meningkat di awal tahun (Januari) dan akhir tahun (Desember)
- Bulan Agustus–Oktober cenderung melemah
- Sales 2024 secara keseluruhan lebih stabil dibanding 2022–2023
💡 Business Insights — 5 Temuan Utama
🔵 Insight 1: East Region Mendominasi, Tapi Perlu Konteks
Region East mencatat 43.8% dari total sales dengan 5,421 transaksi. Namun karena Region adalah dummy data, insight ini perlu dikonfirmasi dengan data lokasi aktual sebelum dijadikan dasar keputusan strategis wilayah.
Implikasi bisnis: Jika data region diperbarui dengan data geografis nyata, perusahaan bisa mengoptimalkan distribusi dan logistik berdasarkan performa wilayah yang terukur.
🟢 Insight 2: Butchers & Electric Household adalah Tulang Punggung Bisnis
Dari 8 kategori, Butchers (Rp 204,140) dan Electric Household (Rp 203,261) secara konsisten memimpin baik dari sisi sales maupun profit absolut. Keduanya berkontribusi ~26% dari total sales perusahaan.
Implikasi bisnis: Gangguan pada supply chain atau stok kedua kategori ini akan berdampak besar pada revenue. Perlu prioritas dalam manajemen inventaris dan vendor relationship.
🟡 Insight 3: Satu Produk Mendominasi Keseluruhan Sales
Item_2_BEV menghasilkan Rp 145,446 — 9.4% dari TOTAL sales perusahaan dari satu sub-kategori saja. Ketergantungan besar pada satu item menciptakan risiko bisnis (single point of failure).
Implikasi bisnis: Jika item ini mengalami masalah ketersediaan atau kompetitor menawarkan alternatif, impact-nya ke revenue bisa sangat signifikan.
🟠 Insight 4: Diskon 20% Efektif Mendorong Volume, Margin Tetap Stabil
66.9% transaksi terjadi dengan diskon 20%, menghasilkan 2× lebih banyak transaksi dibanding non-diskon. Rata-rata profit per transaksi hampir identik (Rp 25.15 vs Rp 25.01).
Implikasi bisnis: Diskon terbukti mendorong lebih banyak transaksi. Pertanyaan selanjutnya: apakah transaksi diskon mendatangkan pelanggan baru atau hanya memindahkan pembelian yang sudah akan terjadi (purchase pull-forward)?
🔴 Insight 5: Patisserie & Milk Products Butuh Perhatian
Kedua kategori ini berada di posisi terbawah dari sisi kontribusi sales dan profit absolut. Patisserie (Rp 184,615 sales) dan Milk Products (Rp 182,741) memiliki selisih hampir Rp 21,000 dibanding kategori teratas.
Implikasi bisnis: Perlu kajian apakah kelemahan ini disebabkan oleh harga yang kurang kompetitif, demand yang rendah, atau kurangnya promosi yang tertarget.
📋 Business Recommendations
Rekomendasi 1 — Jadikan Item_2_BEV sebagai “Hero Product”
Dengan sales 9.4% dari total hanya dari satu sub-kategori, Item_2_BEV harus menjadi flagship product. Strategi: pastikan stok selalu tersedia, jadikan anchor dalam paket bundling, dan gunakan sebagai traffic driver untuk meningkatkan cross-selling ke kategori lain.
Rekomendasi 2 — Diversifikasi Portfolio Produk Beverages
Ketergantungan besar pada satu item (Item_2_BEV) adalah risiko. Kembangkan 2–3 sub-kategori Beverages lainnya untuk menjadi “rising stars” yang dapat mengurangi ketergantungan pada satu SKU.
Rekomendasi 3 — Evaluasi Program Diskon dengan Data Lebih Dalam
Diskon 20% efektif mendorong volume, tapi perlu dievaluasi apakah mendatangkan pelanggan baru atau hanya akselerasi pembelian dari pelanggan yang sama. Pertimbangkan A/B test: sebagian pelanggan mendapat diskon, sebagian mendapat poin loyalitas — lalu bandingkan Lifetime Value-nya.
Rekomendasi 4 — Manfaatkan Seasonality untuk Perencanaan Stok & Promosi
Dengan pola yang jelas: puncak di Desember–Januari dan lemah di Agustus–Oktober, perusahaan bisa merencanakan lebih baik. Tingkatkan stok dan anggaran marketing menjelang peak season. Di off-season, gunakan flash sale atau bundle untuk menjaga cash flow.
Rekomendasi 5 — Lakukan Analisis Profitabilitas Real untuk Patisserie & Milk Products
Analisis saat ini menggunakan estimasi profit 20% dari sales. Untuk keputusan bisnis yang lebih akurat, perlu integrasi data biaya produksi, biaya logistik, dan biaya overhead per kategori — terutama untuk Patisserie dan Milk Products yang memerlukan cold chain dan memiliki umur simpan pendek.
🛠️ Tools & Tech Stack
📊 Analisis Data : Python 3.10, pandas 2.x
📁 File Processing : openpyxl (Excel formatting)
📈 Visualisasi : Google Looker Studio
📑 Presentasi : PowerPoint (pptxgenjs)
🗄️ Dataset : Excel (.xlsx), 12,418 rows
🎯 Refleksi & Pembelajaran
Proyek ini mengajarkan beberapa hal penting:
- Data quality adalah fondasi — Dataset bersih memungkinkan analis fokus pada insight, bukan debugging data.
- Konteks bisnis sangat penting — Angka profit 20% yang seragam mengubah cara interpretasi: fokus bukan pada margin, tapi pada volume. Tanpa memahami konteks ini, kesimpulan bisa menyesatkan.
- Satu outlier bisa mengubah seluruh narasi — Item_2_BEV yang 6.6× lebih besar dari sub-kategori kedua adalah temuan yang mengubah seluruh strategi rekomendasi.
- Visualisasi yang baik mempercepat keputusan — Manajemen tidak membaca tabel angka; mereka membaca grafik. Investasi dalam visualisasi yang bersih dan komunikatif adalah kunci adoption dari rekomendasi analisis.
📁 Repository & File
| File | Deskripsi |
|---|---|
README.md | Dokumentasi proyek lengkap |
Data_Retail.xlsx | Dataset utama (12,418 transaksi) |
Data_Retail_Dashboard_Full.xlsx | Dashboard Excel + 5 sheet analisis |
Retail_Sales_Analysis_W6.pptx | Laporan presentasi 6 slide |
🔗 Referensi & Sumber Belajar
- pandas Documentation
- Google Looker Studio Help
- openpyxl Documentation
- Storytelling with Data — Cole Nussbaumer Knaflic
Artikel ini ditulis sebagai bagian dari tugas Minggu 7: Final Project & Portfolio — Junior Data Analyst Program.
Ditulis oleh: Junior Data Analyst | Dipublikasikan: 2025