Pandas & NumPy Academy · leksjon

Sesjonsinndeling og hendelsesrekkefølge

Gruppér hendelser etter bruker og sesjon, beregn sesjonsvarighet med tidsstempelaritmetikk, og sorter hendelser kronologisk.

Leksjon 1 av 413 trinn

Sesjonsinndeling og hendelsesrekkefølge er en gratis leksjon i Pandas & NumPy Academy på CoddyKit. Dette er leksjon 1 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.

Forstå klikkstrømdata

Et datasett med clickstream registrerer hver brukerhandling: sidevisninger, knappetrykk og kjøp – hver som en rad med en user_id, session_id, event_type og timestamp. Før De beregner noen måltall, må De forstå skjemaet. Kjør df.dtypes og df.sample(5) for å se representative rader og bekrefte at tidsstempelkolonnen ble tolket som datetime og ikke som en streng.

import pandas as pd

df = pd.read_csv('clickstream.csv', parse_dates=['timestamp'])
print(df.dtypes)
print(df.sample(5))

Sortere hendelser kronologisk

Hendelsesanalyse er meningsløs hvis radene ikke står i tidsrekkefølge. Sorter etter user_id og deretter timestamp, slik at alle hendelser for samme bruker vises etter hverandre og i riktig rekkefølge. Bruk sort_values(['user_id', 'timestamp']), og tilbakestill indeksen for å få en ryddig heltallssekvens som gjenspeiler den sorterte rekkefølgen.

df = df.sort_values(['user_id', 'timestamp']).reset_index(drop=True)
print(df[['user_id', 'session_id', 'event_type', 'timestamp']].head(10))

Definere grenser mellom økter

Hvis øktene ikke er merket på forhånd, kan De definere dem ved hjelp av et inaktivitetsintervall på 30 minutter: En ny økt begynner når tiden siden forrige hendelse for samme bruker overstiger 30 minutter. Bruk groupby('user_id')['timestamp'].diff() for å beregne intervallet mellom påfølgende hendelser, og marker deretter rader der intervallet overskrider terskelen, som starten på en økt.

threshold = pd.Timedelta('30min')

df['time_gap'] = df.groupby('user_id')['timestamp'].diff()
df['is_new_session'] = (df['time_gap'] > threshold) | (df['time_gap'].isna())
df['session_id_inferred'] = df.groupby('user_id')['is_new_session'].cumsum()

print(df[['user_id', 'timestamp', 'time_gap', 'session_id_inferred']].head(10))

Beregne varighet for økter

Varigheten til en økt er tiden mellom den første og den siste hendelsen i økten. Grupper etter user_id og session_id, og beregn max - min for tidsstempelkolonnen. Konverter den resulterende Timedelta-verdien til minutter med .dt.total_seconds() / 60 for å få et måltall som er lett å tolke. Økter med varighet lik null er besøk med én enkelt hendelse.

session_times = df.groupby(['user_id', 'session_id'])['timestamp'].agg(['min', 'max'])
session_times['duration_minutes'] = (session_times['max'] - session_times['min']).dt.total_seconds() / 60

print(session_times['duration_minutes'].describe())

Telle hendelser per økt

Antallet hendelser i en økt fungerer som en indikator på brukerengasjement. En økt med 20 hendelser tyder sannsynligvis på mer omfattende utforskning enn en økt med 2. Bruk groupby(['user_id', 'session_id']).size() for å telle rader per gruppe, og kall resultatet event_count. Slå deretter dette sammendraget sammen med økttabellen for å få et komplett datasett på øktnivå.

event_counts = df.groupby(['user_id', 'session_id']).size().rename('event_count')
session_df = session_times.join(event_counts)

print(session_df.describe())

Identifisere første og siste hendelse

Den første hendelsen i en økt viser inngangspunktet, for eksempel hjemmesiden eller søkeresultatsiden, mens den siste hendelsen viser hvordan brukeren avsluttet, for eksempel med et kjøp eller en avvisning. Bruk groupby().first() og groupby().last() på den sorterte DataFrame-en. Disse kolonnene for inngang og avslutning er viktige inngangsdata for trakt- og retensjonsanalyse.

session_entry = df.groupby(['user_id', 'session_id'])['event_type'].first().rename('entry_event')
session_exit = df.groupby(['user_id', 'session_id'])['event_type'].last().rename('exit_event')

print(session_entry.value_counts().head())
print(session_exit.value_counts().head())

Nummerere hendelser i en økt

Ved å tilordne et sekvensielt hendelsesnummer i hver økt kan De analysere vanlige hendelsesforløp. Bruk groupby(['user_id', 'session_id']).cumcount() + 1 for å opprette en kolonne med navnet event_rank. Filtrering på event_rank == 1 gir landingshendelsen, mens filtrering på den høyeste rangeringen gir avslutningshendelsen for hver økt.

df['event_rank'] = df.groupby(['user_id', 'session_id']).cumcount() + 1

# First event of each session
landings = df[df['event_rank'] == 1]
print(landings['event_type'].value_counts())

Beregne tid mellom hendelser

Tiden mellom hendelser – intervallet mellom påfølgende hendelser i en økt – viser hvor raskt brukerne beveger seg gjennom produktet. Beregn den med groupby(['user_id', 'session_id'])['timestamp'].diff(). Store intervaller mellom bestemte hendelsestyper kan tyde på nøling eller forvirring på dette trinnet, noe som er et signal om at brukeropplevelsen bør forbedres.

df['inter_event_seconds'] = (
    df.groupby(['user_id', 'session_id'])['timestamp']
    .diff()
    .dt.total_seconds()
)

print(df['inter_event_seconds'].describe())

Antall økter per bruker

Antallet økter per bruker måler hvor ofte hver bruker kommer tilbake. Svært aktive brukere med mange økter bidrar til viktige retensjonsmåltall. Beregn antall økter per bruker med df.groupby('user_id')['session_id'].nunique(). Del brukerne inn i engangsbesøkende, sporadiske brukere og hyppige brukere ved hjelp av pd.qcut() på økttallet.

sessions_per_user = df.groupby('user_id')['session_id'].nunique().rename('session_count')

print(sessions_per_user.describe())
print(sessions_per_user.value_counts().head(10))

Fordeling av økter etter ukedag

Ved å forstå hvilke ukedager som genererer flest økter, blir det enklere å planlegge produktlanseringer, e-postkampanjer og skalering av servere. Hent ut day_of_week fra tidsstempelet for øktstart, og grupper etter denne verdien. Hvis heltallsverdiene (0=mandag, 6=søndag) tilordnes navn på ukedager, blir resultatet enklere å lese i rapporter og diagrammer.

session_starts = df[df['event_rank'] == 1].copy()
session_starts['day_of_week'] = session_starts['timestamp'].dt.day_name()

sessions_by_day = session_starts.groupby('day_of_week').size()
print(sessions_by_day)

Bygge en sammendragstabell på øktnivå

Kombiner alle beregnede måltall – varighet, antall hendelser, inngangshendelse, avslutningshendelse og ukedag – i én enkelt DataFrame med sammendrag på øktnivå. Denne tabellen danner grunnlaget for traktanalyse, retensjonsmodellering og generering av funksjoner for maskinlæring. Hver rad representerer én økt, ikke én rå hendelse.

session_summary = session_df.join(session_entry).join(session_exit)
session_summary = session_summary.reset_index()
print(session_summary.columns.tolist())
print(session_summary.head())

Kort test

Test forståelsen Deres av konseptene innen dataanalyse fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen har De lært å: sortere hendelser kronologisk og utlede øktgrenser fra tidsintervaller, beregne øktvarighet og antall hendelser per økt, samt bygge en sammendragstabell på øktnivå for videre analyse. Deretter skal vi se nærmere på traktanalyse for å måle konvertering mellom trinn i produktet.

Gratis å komme i gang

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 «Sesjonsinndeling og hendelsesrekkefølge» gratis?

Ja – hele teksten i «Sesjonsinndeling og hendelsesrekkefølge» 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 «Sesjonsinndeling og hendelsesrekkefølge»?

Gruppér hendelser etter bruker og sesjon, beregn sesjonsvarighet med tidsstempelaritmetikk, og sorter hendelser kronologisk. 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 1 av 4.

Hvor lang tid tar leksjonen «Sesjonsinndeling og hendelsesrekkefølge»?

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

  1. Sesjonsinndeling og hendelsesrekkefølge
  2. Traktanalyse
  3. Tabell for kohortbevaring
  4. Visualisere brukerreiser
← Tilbake til Pandas & NumPy Academy