본문 바로가기

Python

[Python] 이커머스 데이터 퍼널 분석(Funnel Analysis)

퍼널 분석(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):

전환율(conversion_rates_df)

Homepage → Product Page
방문자의 50.3%가 상품 페이지로 이동.

->  홈페이지 방문자의 절반이 넘는 사용자가 상품에 관심을 갖고 탐색을 시작함.

 

Product Page → Cart
상품을 본 사람 중 29.9%만 장바구니에 추가.

상품 상세 페이지를 방문한 사용자 중 70%가 장바구니에 추가하지 않음.

->  가격, 리뷰, 제품 상세 정보 부족 등이 원인일 가능성이 있음.

 

Cart → Checkout

장바구니에서 결제 단계로 넘어가는 비율이 8%로 매우 낮음.

->  배송비, 예상 결제 금액, 결제 옵션 부족 등이 영향을 미칠 가능성이 큼.

 

Checkout → Purchase
결제까지 진행한 사람 중 6.2%만 최종 구매 완료.

결제 단계에서 93.8%의 사용자가 이탈.

->  결제 수단 부족, 결제 UI/UX 불편함, 예상치 못한 추가 비용 등이 원인일 가능성이 있음.


유지율(Retention Rate)

유지율(retention_rates_df)

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