Analisis Corong
Jejaki bilangan pengguna yang mencapai setiap langkah corong berbilang langkah dan kira kadar penukaran antara langkah berturutan.
Analisis Corong ialah pelajaran Pandas & NumPy Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pandas & NumPy Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.
Apakah Corong Penukaran?
Corong penukaran memodelkan perjalanan pengguna melalui urutan langkah yang diperlukan: contohnya, Halaman Utama → Halaman Produk → Tambah ke Troli → Daftar Keluar → Pembelian. Pada setiap langkah, sesetengah pengguna tercicir dan tidak pernah mencapai langkah seterusnya. Analisis corong mengukur keciciran ini supaya pasukan dapat mengutamakan langkah yang perlu diperbaik terlebih dahulu. Outputnya ialah jadual yang menunjukkan bilangan pengguna dan kadar penukaran pada setiap langkah.
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())Mengira Pengguna Unik pada Setiap Langkah
Bagi setiap langkah corong, kira bilangan pengguna unik yang mencetuskan peristiwa tersebut sekurang-kurangnya sekali. Gunakan df[df['event_type'] == step]['user_id'].nunique() dalam gelung dan kumpulkan hasilnya ke dalam kamus. Menukarkannya kepada Series menjadikan pengiraan peratusan seterusnya lebih mudah dengan satu pembahagian.
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)Mengira Kadar Penukaran dari Langkah ke Langkah
Kadar penukaran dari langkah ke langkah menunjukkan pecahan pengguna yang melengkapkan langkah N dan kemudiannya turut melengkapkan langkah N+1. Kiranya dengan funnel.shift(1) yang memberikan bilangan langkah sebelumnya, kemudian bahagikan: funnel / funnel.shift(1) * 100. Langkah pertama tidak mempunyai langkah sebelumnya, jadi kadarnya ialah NaN atau 100%, bergantung pada cara anda mentakrifkan garis dasar.
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)Mengira Kadar Penukaran Keseluruhan
Kadar penukaran keseluruhan mengukur pecahan semua pengguna yang memasuki corong pada langkah 1 dan akhirnya melengkapkan langkah terakhir. Bahagikan bilangan pengguna pada langkah terakhir dengan bilangan pengguna pada langkah pertama. Kadar penukaran keseluruhan sebanyak 2–5% daripada halaman utama hingga pembelian adalah lazim bagi e-dagang; angka yang lebih rendah menunjukkan keciciran kritikal di suatu tempat dalam 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 Bertertib: Mewajibkan Urutan Langkah
Pengiraan pengguna unik yang mudah menganggap pengguna yang terus melompat ke daftar keluar tanpa melawati halaman produk sebagai kemasukan corong yang sah, lalu mengembungkan penukaran pada langkah awal. Untuk menguatkuasakan susunan, semak bahawa setiap pengguna mencapai langkah N hanya selepas mencapai langkah N-1. Ini memerlukan perbandingan cap masa: pengguna mesti mempunyai peristiwa product_page sebelum peristiwa add_to_cart mereka.
# 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 Mengikut Segmen: Jenis Peranti
Segmen pengguna yang berbeza mungkin mempunyai kadar penukaran yang sangat berbeza. Jalankan pengiraan corong yang sama secara berasingan untuk pengguna desktop dan mudah alih menggunakan groupby('device_type'). Jika pengguna mudah alih banyak tercicir pada langkah daftar keluar, halaman daftar keluar berkemungkinan mempunyai isu kebolehgunaan pada skrin kecil. Corong bersegmen mendedahkan peluang pengoptimuman yang disasarkan.
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)Mengenal Pasti Langkah dengan Keciciran Terbesar
Langkah yang mengalami kehilangan mutlak pengguna paling besar ialah sasaran pengoptimuman berkeutamaan tertinggi. Cari langkah tersebut dengan mengira perbezaan antara bilangan pengguna bagi langkah berturutan menggunakan funnel.diff() — nilai paling negatif sepadan dengan keciciran terbesar. Bentangkan dapatan ini dalam bentuk angka dan visual untuk pihak berkepentingan.
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)')Masa antara Langkah Corong
Masa yang diambil oleh pengguna untuk bergerak dari satu langkah ke langkah seterusnya mendedahkan geseran. Jika pengguna menunggu berjam-jam antara menambah item ke troli dan membuat daftar keluar, e-mel troli terbengkalai mungkin dapat menarik mereka kembali. Kira median masa antara setiap pasangan langkah menggunakan DataFrame first_events dengan menolak lajur cap masa bersebelahan dan mengambil median merentas 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')Trend Corong Mingguan
Jejaki sama ada kadar penukaran bertambah baik atau merosot dari minggu ke minggu dengan mengira corong bagi setiap minggu secara berasingan. Kumpulkan jadual peristiwa pertama mengikut minggu menggunakan first_events['homepage'].dt.isocalendar().week dan kira kadar penukaran keseluruhan bagi setiap minggu. Penurunan mendadak pada minggu tertentu mungkin bertepatan dengan keluaran 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))Membina DataFrame Ringkasan Corong
Susun semua metrik corong ke dalam DataFrame ringkasan yang kemas supaya boleh dieksport ke laporan atau dimasukkan ke dalam visualisasi. Sertakan lajur untuk nama langkah, bilangan pengguna, penukaran dari langkah ke langkah, penukaran keseluruhan dan pengguna yang hilang. DataFrame tunggal ini sepatutnya menjadi hasil akhir analisis corong yang boleh dibaca oleh jurutera dan pengurus 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)Memvisualkan Corong sebagai Carta Bar
Lukiskan corong sebagai carta bar mendatar, dengan panjang setiap bar mewakili bilangan pengguna pada langkah tersebut. Bentuk corong akan muncul secara semula jadi apabila bar disusun dari atas (pengguna terbanyak) ke bawah (pengguna paling sedikit). Anotasikan setiap bar dengan peratusan penukaran dari satu langkah ke langkah seterusnya supaya carta ini lengkap dan tidak memerlukan jadual data berasingan untuk ditafsirkan.
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()Semakan Pantas
Uji pemahaman anda tentang konsep Analisis Data daripada pelajaran ini.
Rumusan Pelajaran
Dalam pelajaran ini, anda telah mempelajari: mengira pengguna unik pada setiap langkah corong, mengira kadar penukaran antara langkah dan secara keseluruhan, serta membahagikan corong mengikut jenis peranti dan menjejaki trend penukaran mingguan. Seterusnya, kita akan meneroka jadual pengekalan kohort untuk menjejaki bilangan pengguna yang kembali dari minggu ke minggu.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Analisis Corong” percuma?
Ya — teks penuh “Analisis Corong” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pandas & NumPy Academy, tingkat taraf kepada CoddyKit PRO. Kursus Pandas & NumPy Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Analisis Corong”?
Jejaki bilangan pengguna yang mencapai setiap langkah corong berbilang langkah dan kira kadar penukaran antara langkah berturutan. Anda berlatih Pandas & NumPy Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pandas & NumPy Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pandas & NumPy Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Analisis Corong” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pembentukan Sesi dan Pengurutan Peristiwa
- Analisis Corong
- Jadual Pengekalan Kohort
- Memvisualisasikan Perjalanan Pengguna