Pandas & NumPy Academy · Pelajaran

Pembentukan Sesi dan Pengurutan Peristiwa

Kelompokkan peristiwa berdasarkan pengguna dan sesi, hitung durasi sesi dengan aritmetika cap waktu, lalu urutkan peristiwa secara kronologis.

Pelajaran 1 dari 413 langkah

Pembentukan Sesi dan Pengurutan Peristiwa adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Memahami Data Aliran Klik

Data aliran klik mencatat setiap tindakan pengguna: tampilan halaman, klik tombol, dan pembelian—masing-masing sebagai satu baris dengan user_id, session_id, event_type, dan timestamp. Sebelum menghitung metrik apa pun, Anda harus memahami skemanya. Jalankan df.dtypes dan df.sample(5) untuk melihat baris yang mewakili data serta memastikan kolom timestamp diuraikan sebagai datetime, bukan string.

import pandas as pd

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

Mengurutkan Kejadian Secara Kronologis

Analisis kejadian tidak bermakna jika baris tidak disusun berdasarkan waktu. Urutkan berdasarkan user_id, lalu timestamp, agar semua kejadian untuk pengguna yang sama muncul berurutan dan dalam urutan yang benar. Gunakan sort_values(['user_id', 'timestamp']) dan setel ulang indeks untuk memperoleh urutan bilangan bulat yang bersih sesuai hasil pengurutan.

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

Menentukan Batas Sesi

Jika sesi belum diberi label sebelumnya, Anda dapat menentukannya berdasarkan jeda tidak aktif selama 30 menit: sesi baru dimulai setiap kali waktu sejak kejadian sebelumnya untuk pengguna yang sama melebihi 30 menit. Gunakan groupby('user_id')['timestamp'].diff() untuk menghitung jeda antara kejadian yang berurutan, lalu tandai baris dengan jeda yang melebihi ambang batas sebagai awal sesi.

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))

Menghitung Durasi Sesi

Durasi sesi adalah waktu antara kejadian pertama dan terakhir dalam sebuah sesi. Kelompokkan berdasarkan user_id dan session_id, lalu hitung max - min pada kolom timestamp. Konversikan Timedelta yang dihasilkan menjadi menit dengan .dt.total_seconds() / 60 agar menjadi metrik yang mudah dipahami. Sesi dengan durasi nol merupakan kunjungan dengan satu kejadian.

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())

Menghitung Kejadian per Sesi

Jumlah kejadian dalam sebuah sesi dapat menjadi indikator keterlibatan pengguna. Sesi dengan 20 kejadian kemungkinan menunjukkan eksplorasi yang lebih mendalam daripada sesi dengan 2 kejadian. Gunakan groupby(['user_id', 'session_id']).size() untuk menghitung baris per kelompok dan beri nama hasilnya event_count. Gabungkan kembali ringkasan ini ke tabel sesi untuk memperoleh dataset lengkap pada tingkat sesi.

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

print(session_df.describe())

Mengidentifikasi Kejadian Pertama dan Terakhir

Kejadian pertama dalam sesi menunjukkan titik masuk, misalnya beranda atau halaman hasil pencarian, sedangkan kejadian terakhir menunjukkan perilaku keluar, misalnya pembelian atau keluar tanpa tindakan. Gunakan groupby().first() dan groupby().last() pada DataFrame yang telah diurutkan. Kolom masuk dan keluar ini merupakan masukan penting untuk analisis corong dan retensi.

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())

Memberi Nomor pada Kejadian dalam Sesi

Memberikan nomor kejadian berurutan dalam setiap sesi memungkinkan analisis terhadap urutan kejadian yang umum. Gunakan groupby(['user_id', 'session_id']).cumcount() + 1 untuk membuat kolom event_rank. Pemfilteran berdasarkan event_rank == 1 menghasilkan kejadian pendaratan; pemfilteran berdasarkan peringkat maksimum menghasilkan kejadian keluar untuk setiap sesi.

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())

Menghitung Waktu Antar-Kejadian

Waktu antar-kejadian—jeda antara kejadian yang berurutan dalam sebuah sesi—menunjukkan seberapa cepat pengguna berpindah dalam produk. Hitung dengan groupby(['user_id', 'session_id'])['timestamp'].diff(). Jeda yang panjang antara jenis kejadian tertentu dapat menunjukkan keraguan atau kebingungan pada tahap tersebut, yang menjadi sinyal untuk perbaikan pengalaman pengguna.

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

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

Jumlah Sesi per Pengguna

Jumlah sesi per pengguna mengukur seberapa sering setiap pengguna kembali. Pengguna aktif dengan banyak sesi mendorong KPI retensi. Hitung sesi per pengguna dengan df.groupby('user_id')['session_id'].nunique(). Kelompokkan pengguna menjadi pengunjung satu kali, pengguna sesekali, dan pengguna rutin menggunakan pd.qcut() pada jumlah sesi.

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))

Distribusi Sesi Berdasarkan Hari dalam Seminggu

Memahami hari apa yang menghasilkan sesi terbanyak membantu penjadwalan peluncuran produk, kampanye surel, dan penskalaan server. Ekstrak day_of_week dari timestamp awal sesi, lalu kelompokkan berdasarkan nilai tersebut. Memetakan nilai bilangan bulat (0=Senin, 6=Minggu) ke nama hari membuat hasilnya lebih mudah dibaca dalam laporan dan grafik.

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)

Membangun Tabel Ringkasan pada Tingkat Sesi

Gabungkan semua metrik yang telah dihitung—durasi, jumlah kejadian, kejadian masuk, kejadian keluar, dan hari dalam seminggu—ke dalam satu DataFrame ringkasan pada tingkat sesi. Tabel ini menjadi dasar untuk analisis corong, pemodelan retensi, dan pembuatan fitur pembelajaran mesin. Setiap baris mewakili satu sesi, bukan satu kejadian mentah.

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())

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini, Anda mempelajari: mengurutkan kejadian secara kronologis dan menyimpulkan batas sesi dari jeda waktu, menghitung durasi sesi dan jumlah kejadian per sesi, serta membangun tabel ringkasan pada tingkat sesi untuk analisis lanjutan. Selanjutnya, kita akan mempelajari analisis corong untuk mengukur konversi antar-tahap produk.

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembentukan Sesi dan Pengurutan Peristiwa” gratis?

Ya — teks lengkap “Pembentukan Sesi dan Pengurutan Peristiwa” 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 “Pembentukan Sesi dan Pengurutan Peristiwa”?

Kelompokkan peristiwa berdasarkan pengguna dan sesi, hitung durasi sesi dengan aritmetika cap waktu, lalu urutkan peristiwa secara kronologis. 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 1 dari 4.

Berapa lama pelajaran “Pembentukan Sesi dan Pengurutan Peristiwa” 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