0Pricing
Pandas & NumPy Academy · Pelajaran

Tabel Retensi Kohort

Bangun matriks retensi kohort yang menunjukkan persentase pengguna minggu ke-0 yang masih aktif pada minggu-minggu berikutnya menggunakan pivot_table.

Tabel Retensi Kohort adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Tabel Retensi Kohort?

Tabel retensi kohort mengelompokkan pengguna berdasarkan minggu (atau bulan) ketika mereka pertama kali menggunakan produk, lalu melacak persentase setiap kohort yang masih aktif pada minggu-minggu berikutnya. Baris 0 selalu menunjukkan 100% karena minggu ke-0 didefinisikan sebagai minggu pendaftaran. Nilai pada kolom-kolom berikutnya menunjukkan seberapa cepat produk kehilangan pengguna — semakin lambat penurunannya, semakin kuat retensinya.

import pandas as pd

df = pd.read_csv('user_events.csv', parse_dates=['event_date'])
print(df.dtypes)
print(df.head())

Menetapkan Minggu Kohort untuk Setiap Pengguna

Minggu kohort adalah minggu saat peristiwa pertama setiap pengguna terjadi. Gunakan groupby('user_id')['event_date'].min() untuk menemukan tanggal peristiwa pertama setiap pengguna, lalu konversikan ke minggu ISO dengan .dt.to_period('W'). Gabungkan kembali label kohort ini ke DataFrame peristiwa utama agar setiap baris mengetahui minggu kohort pengguna terkait.

cohort_week = df.groupby('user_id')['event_date'].min().dt.to_period('W').rename('cohort_week')
df = df.join(cohort_week, on='user_id')

df['event_week'] = df['event_date'].dt.to_period('W')

print(df[['user_id', 'event_date', 'cohort_week', 'event_week']].head())

Menghitung Nomor Minggu Sejak Kohort

Nomor minggu (juga disebut nomor periode atau usia) adalah selisih antara minggu peristiwa dan minggu kohort. Pengurangan Period Pandas menghasilkan selisih bilangan bulat. Minggu ke-0 berarti pengguna aktif selama minggu pendaftarannya; minggu ke-4 berarti pengguna kembali empat minggu kemudian. Kolom selisih ini menjadi sumbu kolom matriks retensi.

df['week_number'] = (df['event_week'] - df['cohort_week']).apply(lambda x: x.n)

print(df[['user_id', 'cohort_week', 'event_week', 'week_number']].head(10))

Menghitung Pengguna Aktif untuk Setiap Pasangan Kohort-Minggu

Kelompokkan berdasarkan cohort_week dan week_number, lalu hitung pengguna unik untuk mendapatkan matriks jumlah retensi mentah. Setiap sel menunjukkan jumlah pengguna dari kohort C yang aktif pada minggu N. Diagonal dari kiri atas ke kanan bawah (minggu ke-0 untuk setiap kohort) menunjukkan ukuran kohort, yang menjadi penyebut untuk menghitung persentase.

retention_counts = (
    df.groupby(['cohort_week', 'week_number'])['user_id']
    .nunique()
    .reset_index(name='active_users')
)

print(retention_counts.head(10))

Mengubah Data Menjadi Matriks Retensi

Gunakan pivot_table() untuk mengubah jumlah retensi berformat panjang menjadi matriks lebar: baris berisi minggu kohort dan kolom berisi nomor minggu. aggfunc='sum' menangani kunci groupby yang duplikat. Isi sel dengan 0 untuk minggu ketika tidak ada pengguna dari kohort tersebut yang aktif. Matriks ini merupakan inti analisis retensi.

retention_matrix = retention_counts.pivot_table(
    index='cohort_week',
    columns='week_number',
    values='active_users',
    aggfunc='sum'
).fillna(0)

print(retention_matrix.iloc[:5, :8])

Menghitung Persentase Retensi

Bagi setiap baris dengan nilainya pada minggu ke-0 untuk mengubah jumlah menjadi persentase. Kolom minggu ke-0 adalah ukuran kohort, yang disimpan dalam retention_matrix[0]. Gunakan divide(cohort_sizes, axis=0) dan kalikan dengan 100. Bulatkan hingga satu angka desimal agar mudah dibaca. Hasilnya adalah heatmap retensi standar yang digunakan dalam laporan analitik produk.

cohort_sizes = retention_matrix[0]
retention_pct = retention_matrix.divide(cohort_sizes, axis=0) * 100
retention_pct = retention_pct.round(1)

print(retention_pct.iloc[:5, :8])

Menafsirkan Kurva Retensi

Bacalah tabel retensi secara diagonal: setiap baris menurun seiring waktu. Produk dengan retensi kuat akan menampilkan nilai seperti 100, 60, 50, 45, 42 — penurunan awal yang cepat lalu titik stabil. Produk dengan retensi buruk menampilkan 100, 30, 15, 8, 4 — penurunan terus-menerus tanpa titik stabil. Tingkat titik stabil (jika ada) disebut tingkat retensi jangka panjang dan merupakan KPI retensi yang paling penting.

# Average retention rate per week number across all cohorts
avg_retention = retention_pct.mean(axis=0)
print('Average retention by week:')
print(avg_retention.round(1))

Mengidentifikasi Kohort Terbaik dan Terburuk

Bandingkan kinerja kohort dengan melihat retensi minggu ke-4 atau minggu ke-8 di antara berbagai kohort. Kohort dengan retensi minggu ke-4 tertinggi mungkin mendapatkan manfaat dari peningkatan produk atau saluran akuisisi yang efektif; kohort terburuk mungkin diperoleh melalui saluran berkualitas rendah. Gunakan .loc[:, 4].sort_values(ascending=False) untuk mengurutkan kohort berdasarkan retensi minggu ke-4.

if 4 in retention_pct.columns:
    week4 = retention_pct[4].sort_values(ascending=False)
    print('Cohorts ranked by week-4 retention:')
    print(week4)

Memvisualisasikan Retensi sebagai Heatmap

Heatmap berkode warna adalah visualisasi baku untuk tabel retensi. Gunakan sns.heatmap() dengan annot=True untuk menampilkan nilai persentase di dalam setiap sel serta peta warna divergen (retensi rendah = merah, tinggi = hijau). Tetapkan vmin=0 dan vmax=100 agar warna dapat dibandingkan pada skala retensi yang berbeda.

import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(14, 6))
sns.heatmap(retention_pct.iloc[:, :13],
            annot=True, fmt='.0f',
            cmap='RdYlGn', vmin=0, vmax=100,
            ax=ax, linewidths=0.5)
ax.set_title('Weekly Cohort Retention (%)')
ax.set_xlabel('Week Number')
ax.set_ylabel('Cohort Week')
plt.tight_layout()
plt.show()

Menggambarkan Kurva Retensi

Diagram garis retensi rata-rata per minggu menyampaikan kurva penurunan keseluruhan dengan lebih jelas daripada heatmap saat dipresentasikan kepada pemangku kepentingan nonteknis. Gambarkan kurva retensi rata-rata dengan pita berarsir yang menunjukkan plus-minus satu simpangan baku untuk menyampaikan besarnya variasi antarkohort. Titik stabil — tempat garis mendatar — adalah batas dasar retensi alami produk.

avg_ret = retention_pct.mean(axis=0)
std_ret = retention_pct.std(axis=0)

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(avg_ret.index, avg_ret.values, color='steelblue', linewidth=2, marker='o')
ax.fill_between(avg_ret.index, avg_ret - std_ret, avg_ret + std_ret, alpha=0.2)
ax.set_xlabel('Week Number')
ax.set_ylabel('Retention %')
ax.set_title('Average Cohort Retention Curve')
plt.tight_layout()
plt.show()

Mengekspor Tabel Retensi

Ekspor tabel retensi ke Excel agar manajer produk dapat membagikannya dalam tinjauan mingguan. Gunakan to_excel() dan terapkan pemformatan bersyarat secara manual di Excel, atau gunakan Styler.background_gradient() di Pandas untuk menambahkan warna langsung ke file yang diekspor. Tabel retensi merupakan salah satu keluaran yang paling sering diminta dalam analitik produk.

styled = retention_pct.style.background_gradient(cmap='RdYlGn', vmin=0, vmax=100)
styled.to_excel('retention_table.xlsx', engine='openpyxl')
print('Retention table saved to retention_table.xlsx')

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda mempelajari: menetapkan pengguna ke minggu kohort dan menghitung selisih minggu, mengubah data menjadi matriks retensi dan mengonversi jumlah menjadi persentase, serta memvisualisasikan retensi kohort sebagai heatmap dan kurva retensi rata-rata. Selanjutnya, kita akan mempelajari visualisasi perjalanan pengguna melalui diagram batang corong dan heatmap.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tabel Retensi Kohort” gratis?

Ya — teks lengkap “Tabel Retensi Kohort” 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 “Tabel Retensi Kohort”?

Bangun matriks retensi kohort yang menunjukkan persentase pengguna minggu ke-0 yang masih aktif pada minggu-minggu berikutnya menggunakan pivot_table. 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 3 dari 4.

Berapa lama pelajaran “Tabel Retensi Kohort” 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

  1. Pembentukan Sesi dan Pengurutan Peristiwa
  2. Analisis Corong
  3. Tabel Retensi Kohort
  4. Memvisualisasikan Perjalanan Pengguna
← Kembali ke Pandas & NumPy Academy