Tabell for kohortbevaring
Bygg en matrise for kohortbevaring som viser prosentandelen av brukere i uke 0 som fortsatt er aktive i påfølgende uker, ved hjelp av pivot_table.
Tabell for kohortbevaring er en gratis leksjon i Pandas & NumPy Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Pandas & NumPy Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.
Hva er en kohorttabell for brukerbevaring?
En kohorttabell for brukerbevaring grupperer brukere etter uken (eller måneden) de brukte produktet for første gang, og følger deretter hvor stor prosentandel av hver kohort som fortsatt er aktive i påfølgende uker. Rad 0 viser alltid 100 %, fordi uke 0 er definert som registreringsuken. Verdiene i senere kolonner viser hvor raskt produktet mister brukere – jo saktere nedgangen er, desto bedre er brukerbevaringen.
import pandas as pd
df = pd.read_csv('user_events.csv', parse_dates=['event_date'])
print(df.dtypes)
print(df.head())Tilordne hver bruker en kohortuke
Kohortuken er uken for hver brukers første hendelse. Bruk groupby('user_id')['event_date'].min() for å finne datoen for den første hendelsen per bruker, og konverter deretter datoen til en ISO-uke med .dt.to_period('W'). Slå denne kohortetiketten sammen med hoved-DataFrame-en for hendelser, slik at hver rad vet hvilken kohortuke brukerens tilhører.
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())Beregne ukenummeret siden kohorten
Ukenummeret (også kalt periodetall eller alder) er forskjellen mellom hendelsesuken og kohortuken. Subtraksjon av Pandas-Period-objekter returnerer et heltallsavvik. Uke 0 betyr at brukeren var aktiv i registreringsuken, mens uke 4 betyr at brukeren kom tilbake fire uker senere. Denne avvikskolonnen blir kolonneaksen i bevaringsmatrisen.
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))Telle aktive brukere per kohortukepar
Grupper etter både cohort_week og week_number, og tell unike brukere for å få matrisen med rå bevaringstall. Hver celle viser hvor mange brukere fra kohort C som var aktive i uke N. Diagonalen fra øverst til venstre til nederst til høyre (uke 0 for hver kohort) viser kohortstørrelsene, som er nevnerne ved beregning av prosenter.
retention_counts = (
df.groupby(['cohort_week', 'week_number'])['user_id']
.nunique()
.reset_index(name='active_users')
)
print(retention_counts.head(10))Pivotere til en bevaringsmatrise
Bruk pivot_table() for å gjøre bevaringstallene i langt format om til en bred matrise: radene er kohortuker, og kolonnene er ukenumre. aggfunc='sum' håndterer eventuelle dupliserte groupby-nøkler. Fyll celler med 0 for uker der ingen brukere fra kohorten var aktive. Denne matrisen er kjernen i bevaringsanalysen.
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])Beregne bevaringsprosenter
Del hver rad på verdien for uke 0 for å konvertere tallene til prosenter. Kolonnen for uke 0 er kohortstørrelsen, lagret i retention_matrix[0]. Bruk divide(cohort_sizes, axis=0) og multipliser med 100. Rund av til én desimal for bedre lesbarhet. Resultatet er det standardiserte bevaringsvarmekartet som forventes i rapporter om produktanalyse.
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])Tolke bevaringskurven
Les bevaringstabellen diagonalt: hver rad synker over tid. Et produkt med god brukerbevaring vil vise verdier som 100, 60, 50, 45, 42 – et raskt innledende fall etterfulgt av et stabilt platå. Et produkt med dårlig bevaring viser 100, 30, 15, 8, 4 – en kontinuerlig nedgang uten platå. Platånivået (hvis det finnes) kalles langsiktig bevaringsrate og er den viktigste KPI-en for brukerbevaring.
# 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))Identifisere de beste og dårligste kohortene
Sammenlign kohortresultater ved å se på bevaringen i uke 4 eller uke 8 på tvers av kohorter. Kohorten med høyest bevaring i uke 4 hadde fordel av en produktforbedring eller en effektiv anskaffelseskanal, mens den dårligste kohorten kan ha blitt anskaffet via en kanal med lav kvalitet. Bruk .loc[:, 4].sort_values(ascending=False) for å rangere kohortene etter bevaringen i uke 4.
if 4 in retention_pct.columns:
week4 = retention_pct[4].sort_values(ascending=False)
print('Cohorts ranked by week-4 retention:')
print(week4)Visualisere bevaring som et varmekart
Et fargekodet varmekart er den vanligste visualiseringen for bevaringstabeller. Bruk sns.heatmap() med annot=True for å vise prosentverdien i hver celle, samt et divergerende fargekart (lav bevaring = rød, høy = grønn). Angi vmin=0 og vmax=100 slik at fargene kan sammenlignes på tvers av ulike bevaringsskalaer.
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()Tegne bevaringskurven
Et linjediagram over gjennomsnittlig bevaring per uke formidler den samlede nedgangskurven tydeligere enn et varmekart når det presenteres for ikke-tekniske interessenter. Tegn den gjennomsnittlige bevaringskurven med et skyggelagt bånd som viser pluss eller minus ett standardavvik, for å formidle hvor stor variasjonen mellom kohortene er. Platået – der linjen flater ut – er produktets naturlige bevaringsgulv.
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()Eksportere bevaringstabellen
Eksporter bevaringstabellen til Excel, slik at produktansvarlige kan dele den i ukentlige gjennomganger. Bruk to_excel() og legg til betinget formatering manuelt i Excel, eller bruk Styler.background_gradient() i Pandas for å legge farger direkte til den eksporterte filen. Bevaringstabellen er et av de mest etterspurte resultatene innen produktanalyse.
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')Hurtigsjekk
Test forståelsen Deres av begrepene innen dataanalyse fra denne leksjonen.
Oppsummering av leksjonen
I denne leksjonen lærte De å: tilordne brukere til kohortuker og beregne ukeavvik, pivotere til en bevaringsmatrise og konvertere tall til prosenter og visualisere kohortbevaring som et varmekart og en kurve for gjennomsnittlig bevaring. Deretter skal vi se på visualisering av brukerreiser ved hjelp av traktdiagrammer og varmekart.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Tabell for kohortbevaring» gratis?
Ja – hele teksten i «Tabell for kohortbevaring» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Pandas & NumPy Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Pandas & NumPy Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Tabell for kohortbevaring»?
Bygg en matrise for kohortbevaring som viser prosentandelen av brukere i uke 0 som fortsatt er aktive i påfølgende uker, ved hjelp av pivot_table. Du øver på Pandas & NumPy Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Pandas & NumPy Academy?
Ingen tidligere erfaring er nødvendig. Pandas & NumPy Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Tabell for kohortbevaring»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Pandas & NumPy Academy-leksjonen?
Ja. Alle Pandas & NumPy Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Sesjonsinndeling og hendelsesrekkefølge
- Traktanalyse
- Tabell for kohortbevaring
- Visualisere brukerreiser