Analisis Corong
Lacak jumlah pengguna yang mencapai setiap langkah dalam corong bertahap dan hitung tingkat konversi antara langkah-langkah yang berurutan.
Analisis Corong adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.
Apa Itu Corong Konversi?
Corong konversi memodelkan perjalanan pengguna melalui rangkaian tahap yang diperlukan, misalnya Beranda → Halaman Produk → Tambahkan ke Keranjang → Pembayaran → Pembelian. Pada setiap tahap, sebagian pengguna berhenti dan tidak pernah mencapai tahap berikutnya. Analisis corong mengukur jumlah pengguna yang berhenti ini agar tim dapat memprioritaskan tahap yang harus diperbaiki terlebih dahulu. Hasilnya berupa tabel yang menampilkan jumlah pengguna dan tingkat konversi pada setiap tahap.
import pandas as pd
FUNNEL_STEPS = [
'homepage',
'product_page',
'add_to_cart',
'checkout',
'purchase'
]
df = pd.read_csv('clickstream.csv', parse_dates=['timestamp'])
print(df['event_type'].value_counts())Menghitung Pengguna Unik di Setiap Tahap
Untuk setiap tahap corong, hitung jumlah pengguna unik yang memicu kejadian tersebut setidaknya satu kali. Gunakan df[df['event_type'] == step]['user_id'].nunique() di dalam perulangan, lalu kumpulkan hasilnya ke dalam kamus. Mengonversinya menjadi Series akan mempermudah perhitungan persentase berikutnya dengan satu operasi pembagian.
step_counts = {}
for step in FUNNEL_STEPS:
users = df[df['event_type'] == step]['user_id'].nunique()
step_counts[step] = users
funnel = pd.Series(step_counts, name='users')
print(funnel)Menghitung Tingkat Konversi Antar-Tahap
Tingkat konversi antar-tahap menunjukkan bagian pengguna yang menyelesaikan tahap N dan kemudian juga menyelesaikan tahap N+1. Hitung dengan funnel.shift(1) (yang memberikan jumlah pada tahap sebelumnya), lalu lakukan pembagian: funnel / funnel.shift(1) * 100. Tahap pertama tidak memiliki tahap sebelumnya, sehingga tingkatnya adalah NaN atau 100 %, bergantung pada cara Anda menentukan tolok ukur.
funnel_df = funnel.to_frame()
funnel_df['prev_users'] = funnel_df['users'].shift(1)
funnel_df['step_conversion_%'] = (funnel_df['users'] / funnel_df['prev_users'] * 100).round(1)
print(funnel_df)Menghitung Tingkat Konversi Keseluruhan
Tingkat konversi keseluruhan mengukur bagian dari semua pengguna yang memasuki corong pada tahap 1 dan akhirnya menyelesaikan tahap terakhir. Bagilah jumlah pengguna pada tahap terakhir dengan jumlah pada tahap pertama. Konversi keseluruhan sebesar 2–5 % dari beranda hingga pembelian merupakan hal yang umum dalam perdagangan elektronik; angka di bawahnya menunjukkan adanya penurunan kritis di suatu bagian corong.
overall_rate = funnel.iloc[-1] / funnel.iloc[0] * 100
print(f'Overall conversion rate: {overall_rate:.1f}%')
funnel_df['overall_conversion_%'] = (funnel_df['users'] / funnel_df['users'].iloc[0] * 100).round(1)
print(funnel_df[['users', 'overall_conversion_%']])Corong Berurutan: Mewajibkan Urutan Tahap
Penghitungan pengguna unik sederhana menganggap pengguna yang langsung menuju pembayaran tanpa mengunjungi halaman produk sebagai entri corong yang valid, sehingga konversi pada tahap awal menjadi terlalu tinggi. Untuk menegakkan urutan, periksa bahwa setiap pengguna mencapai tahap N hanya setelah mencapai tahap N-1. Hal ini memerlukan perbandingan timestamp: pengguna harus memiliki kejadian product_page sebelum kejadian add_to_cart.
# Get first occurrence of each step per user
first_events = df.groupby(['user_id', 'event_type'])['timestamp'].min().unstack('event_type')
# Enforce ordering: each step must come after the previous
first_events['valid_to_cart'] = first_events['add_to_cart'] > first_events['product_page']
print(first_events[['product_page', 'add_to_cart', 'valid_to_cart']].head())Corong Berdasarkan Segmen: Jenis Perangkat
Segmen pengguna yang berbeda dapat memiliki tingkat konversi yang sangat berbeda. Jalankan penghitungan corong yang sama secara terpisah untuk pengguna desktop dan seluler menggunakan groupby('device_type'). Jika pengguna seluler banyak berhenti pada tahap pembayaran, halaman pembayaran kemungkinan memiliki masalah kemudahan penggunaan pada layar kecil. Corong tersegmentasi mengungkap peluang pengoptimalan yang lebih terarah.
def funnel_for_group(group_df):
counts = {}
for step in FUNNEL_STEPS:
counts[step] = group_df[group_df['event_type'] == step]['user_id'].nunique()
return pd.Series(counts)
segmented_funnel = df.groupby('device_type').apply(funnel_for_group)
print(segmented_funnel)Mengidentifikasi Tahap dengan Penurunan Terbesar
Tahap dengan kehilangan pengguna absolut terbesar merupakan sasaran pengoptimalan dengan prioritas tertinggi. Temukan tahap tersebut dengan menghitung selisih antara jumlah pengguna pada tahap yang berurutan menggunakan funnel.diff()—nilai paling negatif menunjukkan penurunan terbesar. Sampaikan temuan ini dalam bentuk numerik dan visual kepada pemangku kepentingan.
dropoffs = funnel.diff().abs()
biggest_drop = dropoffs.idxmax()
biggest_drop_count = dropoffs.max()
print(f'Biggest drop-off: {biggest_drop} ({biggest_drop_count:.0f} users lost)')Waktu Antar-Tahap Corong
Waktu yang diperlukan pengguna untuk berpindah dari satu tahap ke tahap berikutnya mengungkap hambatan. Jika pengguna menunggu berjam-jam antara menambahkan barang ke keranjang dan melakukan pembayaran, surel keranjang yang ditinggalkan dapat mengembalikan mereka. Hitung median waktu antara setiap pasangan tahap menggunakan DataFrame first_events dengan mengurangkan kolom timestamp yang bersebelahan, lalu mengambil median dari semua pengguna.
for i in range(1, len(FUNNEL_STEPS)):
prev = FUNNEL_STEPS[i-1]
curr = FUNNEL_STEPS[i]
delta = (first_events[curr] - first_events[prev]).dt.total_seconds() / 60
print(f'{prev} -> {curr}: median {delta.median():.1f} min, 90th pct {delta.quantile(0.9):.1f} min')Tren Corong Mingguan
Pantau apakah tingkat konversi membaik atau menurun dari minggu ke minggu dengan menghitung corong secara terpisah untuk setiap minggu. Kelompokkan tabel kejadian pertama berdasarkan minggu menggunakan first_events['homepage'].dt.isocalendar().week, lalu hitung tingkat konversi keseluruhan per minggu. Penurunan mendadak pada minggu tertentu mungkin bertepatan dengan peluncuran produk atau perubahan pemasaran.
df['week'] = df['timestamp'].dt.isocalendar().week
weekly_conv = []
for week, wdf in df.groupby('week'):
top = wdf[wdf['event_type'] == FUNNEL_STEPS[0]]['user_id'].nunique()
bot = wdf[wdf['event_type'] == FUNNEL_STEPS[-1]]['user_id'].nunique()
weekly_conv.append({'week': week, 'conversion_%': bot/top*100 if top else 0})
print(pd.DataFrame(weekly_conv))Membangun DataFrame Ringkasan Corong
Kemas semua metrik corong ke dalam DataFrame ringkasan yang rapi agar dapat diekspor ke laporan atau digunakan sebagai masukan visualisasi. Sertakan kolom untuk nama tahap, jumlah pengguna, konversi antar-tahap, konversi keseluruhan, dan pengguna yang hilang. DataFrame tunggal ini harus menjadi hasil akhir analisis corong dan dapat dibaca oleh teknisi maupun manajer produk.
summary = pd.DataFrame({
'step': FUNNEL_STEPS,
'users': [step_counts[s] for s in FUNNEL_STEPS]
})
summary['users_lost'] = summary['users'].shift(-1).rsub(summary['users'])
summary['step_conv_%'] = (summary['users'] / summary['users'].shift(1) * 100).round(1)
summary['overall_conv_%'] = (summary['users'] / summary['users'].iloc[0] * 100).round(1)
print(summary)Memvisualisasikan Corong sebagai Grafik Batang
Gambarkan corong sebagai diagram batang horizontal, dengan panjang setiap batang merepresentasikan jumlah pengguna pada tahap tersebut. Bentuk corong muncul secara alami ketika batang diurutkan dari atas (pengguna terbanyak) ke bawah (pengguna tersedikit). Beri anotasi pada setiap batang dengan persentase konversi dari satu tahap ke tahap berikutnya agar diagram dapat dipahami tanpa memerlukan tabel data terpisah.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8, 5))
ax.barh(summary['step'][::-1], summary['users'][::-1], color='steelblue')
for i, row in summary[::-1].iterrows():
ax.text(row['users'], i - summary.index[0], f' {row['step_conv_%']}%', va='center')
ax.set_xlabel('Unique Users')
ax.set_title('Conversion Funnel')
plt.tight_layout()
plt.show()Pemeriksaan Singkat
Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari: menghitung pengguna unik pada setiap tahap corong, menghitung tingkat konversi antartahap dan secara keseluruhan, serta membagi corong berdasarkan jenis perangkat dan melacak tren konversi mingguan. Selanjutnya, kita akan mempelajari tabel retensi kohort untuk melacak jumlah pengguna yang kembali setiap minggu.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Analisis Corong” gratis?
Ya — teks lengkap “Analisis Corong” 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 “Analisis Corong”?
Lacak jumlah pengguna yang mencapai setiap langkah dalam corong bertahap dan hitung tingkat konversi antara langkah-langkah yang berurutan. 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 2 dari 4.
Berapa lama pelajaran “Analisis Corong” 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