퍼널 분석(Funnel Analysis)
- 사용자가 특정 목표(예: 구매 완료)에 도달하는 과정에서 각 단계별로 얼마나 많은 사용자가 이탈하는지를 분석하는 방법론
- 사용자가 어디에서 이탈하는지 파악하는 데 도움이 되며, 그 이유를 이해하여 이탈률을 줄이고 전환율을 높일 수 있는 장점이 있다.
0. 패키지 및 데이터 로드
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/퍼널 분석/user_data.csv')
df
- stage: 각 단계
- conversion: 해당 단계의 다음 단계로 넘어가는지 여부
1. 전환율(Conversion Rate), 리텐션율(Retention Rate) 해석
전환율(Conversion Rate): 사용자가 특정 목표 행동을 수행하는 비율
리텐션율(Retention Rate): 사용자가 일정 기간 후에도 서비스를 계속 이용하는 비율
이탈율(Drop-off Rate): 특정 단계에서 이탈한 비율
stages = df['stage'].unique()
conversion_rates = {}
retention_rates = {}
for stage in stages:
stage_data = df[df['stage'] == stage] # 각 단계에 해당하는 데이터만 필터링
conversion_rate = stage_data['conversion'].mean() # 각 단계마다 True의 비율
retention_rate = len(stage_data) / len(df) # 단계 / 전체
conversion_rates[stage] = conversion_rate
retention_rates[stage] = retention_rate
conversion_rates_df = pd.DataFrame(list(conversion_rates.items()),
columns=['Stage', 'Conversion Rate'])
retention_rates_df = pd.DataFrame(list(retention_rates.items()),
columns=['Stage', 'Retention Rate'])
전환율(Conversion Rate):
Homepage → Product Page
방문자의 50.3%가 상품 페이지로 이동.
-> 홈페이지 방문자의 절반이 넘는 사용자가 상품에 관심을 갖고 탐색을 시작함.
Product Page → Cart
상품을 본 사람 중 29.9%만 장바구니에 추가.
상품 상세 페이지를 방문한 사용자 중 70%가 장바구니에 추가하지 않음.
-> 가격, 리뷰, 제품 상세 정보 부족 등이 원인일 가능성이 있음.
Cart → Checkout
장바구니에서 결제 단계로 넘어가는 비율이 8%로 매우 낮음.
-> 배송비, 예상 결제 금액, 결제 옵션 부족 등이 영향을 미칠 가능성이 큼.
Checkout → Purchase
결제까지 진행한 사람 중 6.2%만 최종 구매 완료.
결제 단계에서 93.8%의 사용자가 이탈.
-> 결제 수단 부족, 결제 UI/UX 불편함, 예상치 못한 추가 비용 등이 원인일 가능성이 있음.
유지율(Retention Rate)
Homepage (홈페이지 방문)
방문자의 58.2%가 다음 단계(상품 페이지)로 이동했음.
첫 방문자의 41.8%가 상품 페이지로 이동하지 않고 이탈.
-> 홈페이지 배너, 추천 상품, 검색 기능 개선이 필요할 수 있음.
Product Page (상품 페이지)
방문자의 29.1%만이 상품 페이지까지 도달.
-> 상품 노출 방식(카테고리, 추천 상품)이 영향을 미쳤을 가능성이 있음.
Cart (장바구니)
방문자의 8.7%만이 장바구니에 상품을 추가.
-> 할인 혜택, 제품 리뷰, 신뢰 요소(반품 정책 등)가 부족할 수 있음.
Checkout (결제 페이지)
방문자의 2.6% 정도만 결제 단계로 이동.
가격, 배송비, 결제 방식 등의 이유로 장바구니에 담고도 결제까지 가지 않는 비율이 높음.
-> 결제 유도 전략 필요
Purchase (구매 완료)
홈페이지 방문자의 1.3%만 최종 구매 완료.
-> 이커머스 업계에서 평균 전환율(2~3%)과 비교하여 개선 여지가 있음
2. 시각화
# 퍼넬 데이터프레임 생성
funnel_data = pd.DataFrame({
'Stage': stages,
'Users': [len(df[df['stage'] == stage]) for stage in stages],
'Conversion Rate': [conversion_rates[stage] for stage in stages],
'Retention Rate': [retention_rates[stage] for stage in stages]
})
import plotly.graph_objects as go
fig = go.Figure(go.Funnel(
y=funnel_data['Stage'],
x=funnel_data['Users'],
textinfo="value+percent initial",
hoverinfo="x+percent initial+percent total",
marker=dict(color=["#FF5733", "#FFC300", "#C70039", "#900C3F"]),
text=funnel_data.apply(lambda row: f"Users: {row['Users']:,}<br>CR: {row['Conversion Rate']:.2%}<br>RR: {row['Retention Rate']:.2%}", axis=1)
))
fig.update_layout(
title='User Funnel with Conversion and Retention Rates',
xaxis_title='Number of Users',
yaxis_title='Stage',
yaxis=dict(categoryorder='total descending')
)
fig.show()
분석 참고: https://www.kaggle.com/code/sungbos/simple-funnel-practice/notebook
Simple Funnel Practice
Explore and run machine learning code with Kaggle Notebooks | Using data from User Funnels DataSet
www.kaggle.com
'Python' 카테고리의 다른 글
[Python] 이커머스 고객 세분화 분석 (RFM, 코호트 분석) (0) | 2025.02.09 |
---|---|
[Python] 결측치 보간법 (1/2차 선형보간법, 평균대치법, KNN, MICE) (0) | 2024.05.29 |
[Python] 이상치 탐지 기법 (IQR, Isolation Forest, rolling 함수, decompose 패키지) (0) | 2024.05.11 |