Kohort Elde Tutma Tablosu
pivot_table kullanarak 0. hafta kullanıcılarının sonraki haftalarda hâlâ etkin olan yüzdesini gösteren bir kohort elde tutma matrisi oluşturun.
Kohort Elde Tutma Tablosu, CoddyKit'te ücretsiz bir Pandas & NumPy Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Pandas & NumPy Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
Kohort Elde Tutma Tablosu Nedir
Bir kohort elde tutma tablosu, kullanıcıları ürünü ilk kullandıkları haftaya (veya aya) göre gruplar ve ardından her kohortun sonraki haftalarda hâlâ etkin olan yüzdesini izler. 0. satır her zaman %100 gösterir; çünkü 0. hafta, kaydolma haftası olarak tanımlanır. Sonraki sütunlardaki değerler, ürünün kullanıcılarını ne kadar hızlı kaybettiğini gösterir — düşüş ne kadar yavaşsa elde tutma o kadar güçlüdür.
import pandas as pd
df = pd.read_csv('user_events.csv', parse_dates=['event_date'])
print(df.dtypes)
print(df.head())Her Kullanıcıya Bir Kohort Haftası Atama
Kohort haftası, her kullanıcının ilk olayının gerçekleştiği haftadır. Kullanıcı başına ilk olay tarihini bulmak için groupby('user_id')['event_date'].min() komutunu kullanın; ardından .dt.to_period('W') ile ISO haftasına dönüştürün. Her satırın, kullanıcısının ait olduğu kohort haftasını bilmesi için bu kohort etiketini ana olaylar DataFrame'ine geri birleştirin.
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())Kohorttan Bu Yana Geçen Hafta Numarasını Hesaplama
Hafta numarası (dönem numarası veya yaş olarak da adlandırılır), olay haftası ile kohort haftası arasındaki farktır. Pandas Period çıkarma işlemi bir tamsayı uzaklığı döndürür. 0. hafta, kullanıcının kaydolma haftasında etkin olduğu anlamına gelir; 4. hafta ise dört hafta sonra geri döndüğü anlamına gelir. Bu uzaklık sütunu, elde tutma matrisinin sütun ekseni olur.
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))Kohort-Hafta Çifti Başına Etkin Kullanıcıları Sayma
Ham elde tutma sayıları matrisini elde etmek için hem cohort_week hem de week_number değerlerine göre gruplayın ve benzersiz kullanıcıları sayın. Her hücre, C kohortundan N. haftada etkin olan kullanıcı sayısını gösterir. Sol üstten sağ alta uzanan köşegen (her kohort için 0. hafta), yüzdeleri hesaplarken payda olarak kullanılan kohort büyüklüklerini verir.
retention_counts = (
df.groupby(['cohort_week', 'week_number'])['user_id']
.nunique()
.reset_index(name='active_users')
)
print(retention_counts.head(10))Elde Tutma Matrisine Dönüştürme
Uzun biçimdeki elde tutma sayılarını geniş bir matrise dönüştürmek için pivot_table() kullanın: satırlar kohort haftaları, sütunlar ise hafta numaralarıdır. aggfunc='sum', yinelenen groupby anahtarlarını işler. O kohorttan hiçbir kullanıcının etkin olmadığı haftalar için hücreleri 0 ile doldurun. Bu matris, elde tutma analizinin temelini oluşturur.
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])Elde Tutma Yüzdelerini Hesaplama
Sayım değerlerini yüzdeye dönüştürmek için her satırı kendi 0. hafta değerine bölün. 0. hafta sütunu, retention_matrix[0] içinde saklanan kohort boyutudur. divide(cohort_sizes, axis=0) kullanın ve sonucu 100 ile çarpın. Okunabilirlik için bir ondalık basamağa yuvarlayın. Elde edilen sonuç, ürün analitiği raporlarında kullanılan standart elde tutma ısı haritasıdır.
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])Elde Tutma Eğrisini Yorumlama
Elde tutma tablosunu çapraz olarak okuyun: her satır zamanla azalır. yüksek elde tutma değerine sahip bir üründe 100, 60, 50, 45, 42 gibi değerler görülür; önce hızlı bir düşüş yaşanır, ardından dengeli bir yatay seyir oluşur. Elde tutma oranı düşük bir üründe ise 100, 30, 15, 8, 4 gibi değerler görülür; yatay seyir oluşmadan sürekli bir düşüş yaşanır. Yatay seyir düzeyi (varsa) uzun vadeli elde tutma oranı olarak adlandırılır ve en önemli elde tutma KPI değeridir.
# 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))En İyi ve En Kötü Kohortları Belirleme
Kohortlar arasındaki performansı, kohortların 4. veya 8. haftadaki elde tutma oranlarına bakarak karşılaştırın. 4. hafta elde tutma oranı en yüksek olan kohort, bir ürün iyileştirmesinden veya etkili bir kullanıcı edinme kanalından yararlanmış olabilir; en kötü kohort ise düşük kaliteli bir kanal üzerinden edinilmiş olabilir. Kohortları 4. hafta elde tutma oranlarına göre sıralamak için .loc[:, 4].sort_values(ascending=False) kullanın.
if 4 in retention_pct.columns:
week4 = retention_pct[4].sort_values(ascending=False)
print('Cohorts ranked by week-4 retention:')
print(week4)Elde Tutmayı Isı Haritası Olarak Görselleştirme
Renklerle kodlanmış bir ısı haritası, elde tutma tabloları için standart görselleştirmedir. Her hücrenin içinde yüzde değerini göstermek için annot=True ile birlikte sns.heatmap() kullanın ve farklı yönlerde ilerleyen bir renk haritası seçin (düşük elde tutma = kırmızı, yüksek = yeşil). Farklı elde tutma ölçeklerinde renklerin karşılaştırılabilir olması için vmin=0 ve vmax=100 değerlerini ayarlayın.
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()Elde Tutma Eğrisini Çizme
haftalara göre ortalama elde tutma değerlerini gösteren bir çizgi grafik, teknik olmayan paydaşlara sunum yaparken genel azalma eğrisini bir ısı haritasından daha anlaşılır biçimde ifade eder. Ortalama elde tutma eğrisini, kohortlar arasındaki değişkenliği göstermek için artı veya eksi bir standart sapmayı belirten gölgeli bir bantla çizin. Çizginin yataylaştığı bölüm olan yatay seyir, ürünün doğal elde tutma tabanıdır.
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()Elde Tutma Tablosunu Dışa Aktarma
Ürün yöneticilerinin tabloyu haftalık değerlendirmelerde paylaşabilmesi için elde tutma tablosunu Excel'e aktarın. to_excel() kullanıp koşullu biçimlendirmeyi Excel'de elle uygulayın veya dışa aktarılan dosyaya doğrudan renk eklemek için Pandas'ta Styler.background_gradient() kullanın. Elde tutma tablosu, ürün analitiğinde en sık talep edilen çıktılardan biridir.
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')Hızlı Kontrol
Bu dersteki Veri Analizi kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: kullanıcıları kohort haftalarına atamayı ve hafta farklarını hesaplamayı, bir elde tutma matrisi oluşturmak için özet tabloya dönüştürmeyi ve sayımları yüzdelere çevirmeyi ve kohort elde tutmasını bir ısı haritası ve ortalama elde tutma eğrisi olarak görselleştirmeyi. Sırada kullanıcı yolculuklarını huni çubuk grafikleri ve ısı haritalarıyla görselleştirmeyi inceleyeceğiz.
Yapay zeka eğitmeniyle Python öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Kohort Elde Tutma Tablosu” dersi ücretsiz mi?
Evet — “Kohort Elde Tutma Tablosu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Pandas & NumPy Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Pandas & NumPy Academy kursu toplamda 4 dersten oluşur.
“Kohort Elde Tutma Tablosu” dersinde ne öğreneceğim?
pivot_table kullanarak 0. hafta kullanıcılarının sonraki haftalarda hâlâ etkin olan yüzdesini gösteren bir kohort elde tutma matrisi oluşturun. Pandas & NumPy Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Pandas & NumPy Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Pandas & NumPy Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Kohort Elde Tutma Tablosu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Pandas & NumPy Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Pandas & NumPy Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Oturumlaştırma ve Olay Sıralama
- Huni Analizi
- Kohort Elde Tutma Tablosu
- Kullanıcı Yolculuklarını Görselleştirme