• 业务痛点: “我花了很多钱买来了流量,用户也访问了我的网站/APP,但为什么最后下单的人这么少?用户到底在哪一步跑掉了?”
  • 核心概念:
    • 转化漏斗 (Conversion Funnel): 这是一个可视化模型,用来描述用户从进入平台到完成最终目标(如下单支付)所经历的关键步骤。它形如漏斗,上宽下窄,因为每一步都会有用户流失。
    • 关键步骤: 电商中典型的漏斗包括:浏览商品 -> 加入购物车 -> 提交订单 -> 支付成功
    • 转化率: (下一步用户数 / 上一步用户数) × 100%
  • 分析思路:
    1. 定义漏斗: 明确分析的业务流程和关键步骤。
    2. 数据提取: 从用户行为日志(埋点数据)中,提取每个步骤的独立用户数(UV)。
    3. 计算转化率: 计算每一步相对于上一步的转化率,以及相对于第一步的总转化率。
    4. 定位瓶颈: 找出转化率骤降的环节,这就是转化漏斗的“瓶颈”,是运营优化的重点。

实践案例:分析APP首页到支付成功的用户转化漏斗

python复制

import pandas as pd
import plotly.graph_objects as go

# --- 1. 数据准备 ---
# 模拟一份用户行为日志数据
# 每一行代表一个用户在一个时间点产生的一个行为
log_data = {
    'user_id': [1, 2, 1, 3, 2, 1, 4, 5, 2, 3, 1, 5, 4, 3],
    'event_name': [
        'app_launch', 'app_launch', 'view_product', 'app_launch', 'view_product',
        'add_to_cart', 'app_launch', 'app_launch', 'add_to_cart', 'view_product',
        'checkout', 'view_product', 'view_product', 'add_to_cart'
    ]
}
log_df = pd.DataFrame(log_data)

print("--- 原始行为日志 ---")
print(log_df.head())

# --- 2. 定义漏斗步骤并计算每步用户数 ---
# 定义漏斗的顺序
funnel_steps = ['app_launch', 'view_product', 'add_to_cart', 'checkout']

# 计算每个步骤的独立用户数 (UV)
step_uv = log_df.groupby('event_name')['user_id'].nunique().reindex(funnel_steps).reset_index()
step_uv.columns = ['step', 'user_count']

print("\n--- 各步骤独立用户数(UV) ---")
print(step_uv)

# --- 3. 绘制转化漏斗图 ---
fig = go.Figure(go.Funnel(
    y = step_uv['step'],
    x = step_uv['user_count'],
    textinfo = "value+percent initial+percent previous", # 显示:数值+相对第一步转化率+相对上一步转化率
    marker = {"color": ["#0099cc", "#33a6d6", "#66b3e0", "#99c0eb"]}
))

fig.update_layout(
    title={
        'text': "用户转化漏斗分析",
        'y':0.9,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'
    }
)

# 在Jupyter中,这行代码会直接显示交互式图表
fig.show()

# --- 4. 业务结论 ---
print("\n--- 分析结论 ---")
print("1. 从`app_launch`到`view_product`,80%的用户留存,说明首页内容对大部分用户有吸引力。")
print("2. 从`view_product`到`add_to_cart`,转化率为75%,表现尚可。")
print("3. **瓶颈发现**:从`add_to_cart`到`checkout`,转化率骤降至33.3%!这是最大的流失点。")
print("4. **优化建议**:应重点分析购物车到结算页的流程。可能原因:结算按钮不明显?需要强制登录?运费过高?支付方式太少?可以针对这些假设设计A/B测试进行优化。")