Memvisualisasikan Perjalanan Pengguna
Plot corong sebagai diagram batang horizontal dan matriks retensi sebagai peta panas untuk menyampaikan temuan kepada pemangku kepentingan.
Memvisualisasikan Perjalanan Pengguna adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Memvisualisasikan Perjalanan Pengguna?
Tabel peristiwa mentah dan tingkat konversi dalam bentuk angka sulit dikomunikasikan kepada pemangku kepentingan nonteknis. Representasi visual perjalanan pengguna — diagram corong, heatmap retensi, dan diagram Sankey — membuat pola segera terlihat. Tujuannya bukan menggantikan angka, melainkan menyajikannya dalam bentuk yang membuat wawasan dapat dipahami sekilas, sehingga mengurangi beban kognitif audiens.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Assume funnel_summary and retention_pct are already computed
print('Visualisation libraries loaded')Diagram Batang Horizontal untuk Corong
Diagram batang horizontal adalah visualisasi corong yang paling sederhana dan paling mudah dipahami. Setiap batang merepresentasikan satu tahap corong; panjang batang merepresentasikan jumlah pengguna. Urutkan tahap dari atas ke bawah sesuai urutan corong agar diagram terbaca sebagai corong yang melebar. Gunakan satu warna kontras untuk semua batang agar perhatian tertuju pada nilai, bukan pada variasi warna.
FUNNEL_STEPS = ['homepage', 'product_page', 'add_to_cart', 'checkout', 'purchase']
users = [10000, 7200, 4100, 2300, 980]
fig, ax = plt.subplots(figsize=(9, 5))
bars = ax.barh(FUNNEL_STEPS[::-1], users[::-1], color='steelblue', height=0.6)
ax.set_xlabel('Unique Users')
ax.set_title('Conversion Funnel')
plt.tight_layout()
plt.show()Memberi Anotasi Tingkat Konversi pada Diagram
Tambahkan anotasi tingkat konversi di tepi kanan setiap batang menggunakan ax.text(). Tampilkan jumlah pengguna absolut dan persentase konversi antartahap agar diagram menyampaikan semua informasi yang diperlukan tanpa tabel data terpisah. Posisikan teks sedikit di luar ujung batang dengan sedikit pergeseran horizontal agar tidak bertumpang tindih dengan warna isian batang.
conversions = [None, 72.0, 56.9, 56.1, 42.6]
for i, (u, c) in enumerate(zip(users[::-1], conversions[::-1])):
label = f'{u:,} users'
if c is not None:
label += f' ({c}% conv)'
ax.text(u + 100, i, label, va='center', fontsize=9)
plt.tight_layout()
plt.show()Meninjau Kembali Heatmap Retensi
Heatmap retensi adalah keluaran standar analisis kohort. Setiap baris merupakan kohort, setiap kolom merupakan selisih minggu, dan setiap sel diberi warna berdasarkan persentase retensi. Gunakan peta warna RdYlGn (merah = rendah, hijau = tinggi) dengan vmin=0, vmax=100 yang ditetapkan secara eksplisit agar skala warna konsisten di berbagai presentasi dan tidak diubah skalanya untuk setiap heatmap.
import numpy as np
# Simulated retention data for illustration
data = [[100, 55, 42, 38, 35, 33],
[100, 52, 40, 36, 33, 0],
[100, 58, 45, 41, 0, 0],
[100, 60, 48, 0, 0, 0]]
retention_pct = pd.DataFrame(data, columns=range(6),
index=['Wk1', 'Wk2', 'Wk3', 'Wk4'])
fig, ax = plt.subplots(figsize=(10, 4))
sns.heatmap(retention_pct, annot=True, fmt='.0f', cmap='RdYlGn',
vmin=0, vmax=100, linewidths=0.5, ax=ax)
ax.set_title('Cohort Retention Heatmap')
plt.tight_layout()
plt.show()Menyamarkan Sel Kohort yang Belum Lengkap
Kohort yang lebih baru belum memiliki cukup waktu untuk menyelesaikan semua selisih minggu. Sel-sel tersebut sebaiknya tampak kosong, bukan sebagai 0%, agar pembaca tidak salah mengira data yang tidak ada sebagai retensi nol. Buat mask boolean ketika nilai sel adalah 0 dan indeks kolom melebihi jumlah minggu sejak kohort tersebut ada, lalu teruskan ke sns.heatmap(mask=...).
mask = retention_pct == 0 # cells with no data yet
fig, ax = plt.subplots(figsize=(10, 4))
sns.heatmap(retention_pct, annot=True, fmt='.0f', cmap='RdYlGn',
vmin=0, vmax=100, linewidths=0.5,
mask=mask, ax=ax)
ax.set_title('Cohort Retention (incomplete cells masked)')
plt.tight_layout()
plt.show()Menggambarkan Kurva Retensi Rata-Rata
Visualisasikan kurva retensi rata-rata dengan menggambarkan rata-rata kolom matriks retensi. Satu garis ini merangkum profil retensi produk secara keseluruhan. Tambahkan pita berarsir sebesar ±1 simpangan baku untuk menunjukkan variasi antarkohort. Pita yang sempit berarti perilaku kohort serupa; pita yang lebar menunjukkan perbedaan penting pada tingkat kohort yang layak diteliti.
avg = retention_pct.mean(axis=0)
std = retention_pct.std(axis=0)
fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(avg.index, avg, marker='o', color='steelblue', linewidth=2)
ax.fill_between(avg.index, avg - std, avg + std, alpha=0.2, color='steelblue')
ax.set_xlabel('Week Number')
ax.set_ylabel('Avg Retention %')
ax.set_title('Average Cohort Retention Curve')
plt.tight_layout()
plt.show()Corong Tersegmentasi: Desktop vs. Seluler
Menggambarkan corong untuk berbagai segmen secara berdampingan menunjukkan apakah masalah produk bersifat umum atau khusus perangkat. Buat diagram batang berkelompok dengan dua kelompok batang pada setiap tahap corong menggunakan ax.bar() dengan pergeseran x. Sebagai alternatif, gambar dua diagram corong terpisah dalam kisi subplot 1×2 menggunakan plt.subplots(1, 2) agar perbandingan lebih rapi.
steps = ['Homepage', 'Product', 'Cart', 'Checkout', 'Purchase']
desktop = [5000, 3800, 2300, 1500, 700]
mobile = [5000, 3400, 1800, 900, 280]
x = range(len(steps))
fig, ax = plt.subplots(figsize=(10, 5))
ax.bar([i - 0.2 for i in x], desktop, width=0.4, label='Desktop', color='steelblue')
ax.bar([i + 0.2 for i in x], mobile, width=0.4, label='Mobile', color='darkorange')
ax.set_xticks(list(x))
ax.set_xticklabels(steps)
ax.legend()
ax.set_title('Funnel by Device Type')
plt.tight_layout()
plt.show()Distribusi Frekuensi Peristiwa
Memvisualisasikan distribusi peristiwa per sesi menunjukkan apakah sesi terkonsentrasi pada sejumlah kecil peristiwa (menandakan pengguna mencapai tujuannya dengan cepat) atau mencakup rentang yang luas (menandakan perjalanan yang rumit atau kebingungan). Gambarkan dengan ax.hist() pada kolom event_count, menggunakan skala logaritmik pada sumbu y jika distribusinya sangat menceng ke kanan.
import numpy as np
event_counts = pd.Series([3, 5, 2, 8, 1, 12, 3, 4, 6, 20, 2, 3, 1, 7, 5])
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(event_counts, bins=15, color='steelblue', edgecolor='white')
ax.set_xlabel('Events per Session')
ax.set_ylabel('Number of Sessions')
ax.set_title('Session Event Frequency Distribution')
plt.tight_layout()
plt.show()Urutan Peristiwa Teratas
Tampilkan urutan dua peristiwa yang paling umum (bigram) dalam aliran klik untuk memahami jalur pengguna yang lazim. Kelompokkan berdasarkan sesi, urutkan berdasarkan event_rank, lalu ambil pasangan berurutan menggunakan zip(events, events[1:]). Hitung frekuensi pasangan dengan Counter dan gambarkan 10 teratas sebagai diagram batang horizontal. Ini menunjukkan jalur navigasi yang paling dominan dalam perilaku pengguna.
from collections import Counter
events_per_session = [['homepage', 'product_page', 'add_to_cart'],
['homepage', 'search', 'product_page'],
['homepage', 'product_page', 'purchase']]
bigrams = Counter()
for session in events_per_session:
for pair in zip(session, session[1:]):
bigrams[pair] += 1
print(bigrams.most_common(5))Distribusi Durasi Sesi
Histogram durasi sesi menunjukkan apakah pengguna berinteraksi sebentar (kurang dari 2 menit), sedang, atau mendalam. Gunakan sumbu x berskala logaritmik jika sejumlah kecil sesi yang sangat panjang akan memadatkan sebagian besar data ke dalam bin paling kiri. Tambahkan garis vertikal pada median dengan ax.axvline() untuk membantu audiens menafsirkan durasi sesi yang “umum”.
durations = pd.Series([1.2, 3.5, 0.5, 12.3, 2.1, 8.7, 1.8, 0.3, 45.1, 4.6])
fig, ax = plt.subplots(figsize=(8, 4))
ax.hist(durations, bins=20, color='steelblue', edgecolor='white')
ax.axvline(durations.median(), color='red', linestyle='--', label=f'Median: {durations.median():.1f} min')
ax.set_xlabel('Session Duration (min)')
ax.set_ylabel('Sessions')
ax.legend()
plt.tight_layout()
plt.show()Menyimpan Gambar Dasbor
Gabungkan beberapa visualisasi menjadi satu gambar dasbor menggunakan kisi subplot dengan plt.subplots(2, 2, figsize=(14, 10)). Tetapkan diagram batang corong, heatmap retensi, kurva retensi rata-rata, dan distribusi peristiwa ke setiap panel. Simpan ke PNG untuk ditampilkan di web atau ke PDF untuk laporan yang dapat dicetak. Satu gambar terpadu lebih mudah dibagikan daripada empat file terpisah.
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
# Panel 1: funnel
axes[0, 0].barh(FUNNEL_STEPS[::-1], users[::-1], color='steelblue')
axes[0, 0].set_title('Funnel')
# Panel 2: retention heatmap
sns.heatmap(retention_pct, ax=axes[0, 1], cmap='RdYlGn', annot=True, fmt='.0f', vmin=0, vmax=100)
axes[0, 1].set_title('Cohort Retention')
fig.suptitle('User Journey Dashboard', fontsize=16)
plt.tight_layout()
fig.savefig('user_journey_dashboard.png', dpi=150, bbox_inches='tight')
print('Dashboard saved')Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari: membuat diagram batang corong dan heatmap retensi beranotasi, menggambarkan kurva retensi rata-rata dengan pita variasi, serta menggabungkan beberapa diagram menjadi satu gambar dasbor yang disimpan ke PNG. Selanjutnya, kita akan mempelajari cara mendeteksi dan menghapus rekaman duplikat dalam pembersihan data tingkat lanjut.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memvisualisasikan Perjalanan Pengguna” gratis?
Ya — teks lengkap “Memvisualisasikan Perjalanan Pengguna” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memvisualisasikan Perjalanan Pengguna”?
Plot corong sebagai diagram batang horizontal dan matriks retensi sebagai peta panas untuk menyampaikan temuan kepada pemangku kepentingan. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Memvisualisasikan Perjalanan Pengguna” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pembentukan Sesi dan Pengurutan Peristiwa
- Analisis Corong
- Tabel Retensi Kohort
- Memvisualisasikan Perjalanan Pengguna