基于python的在线书店AB测试数据分析与可视化
一家在线书店正在优化其网站设计,为用户提供了两种主题:浅色主题和深色主题,并且进行了网站 A/B测试。本项目将使用python对项目进行分析。
一、项目简介
一家在线书店正在优化其网站设计,为用户提供了两种主题:浅色主题和深色主题,并且进行了网站 A/B测试。本项目将使用python对项目进行分析。
二、数据简介
本数据集包括Theme(主题,Light Theme或Dark Theme)、Click Through Rate(点击率)、Conversion Rate(转化率)、Bounce Rate(跳出率)、Scroll_Depth(滚动深度)、Age(年龄)、Location(地理位置)、Session_Duration(会话时长)、Purchases(是否购买)、Added_to_Cart(是否加入购物车)等字段。
数据集链接:Light Theme and Dark Theme: Case Study | Kaggle
三、分析目标
- 比较Light Theme和Dark Theme在关键指标(点击率、转化率、跳出率、滚动深度)上的表现。
- 分析地理位置(Location)和年龄(Age)对主题效果的影响。
- 探索用户行为(会话时长、购物车添加)与购买行为的关联。
四、数据处理
1.数据清洗与预处理
- 处理缺失值和异常值。
- 转换分类变量(Purchases和Added_to_Cart转为0/1)。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
# 1. 数据加载与预处理
df = pd.read_csv("/Users/mac/Downloads/website_ab_test.csv")
# 转换分类变量
df['Purchases'] = df['Purchases'].map({'Yes': 1, 'No': 0})
df['Added_to_Cart'] = df['Added_to_Cart'].map({'Yes': 1, 'No': 0})
df
2.描述性统计
计算各主题的均值、标准差等。
# 2. 描述性统计
print("各主题关键指标均值:")
print(df.groupby('Theme')[['Click Through Rate', 'Conversion Rate', 'Bounce Rate', 'Scroll_Depth']].mean())
3.假设检验
使用独立样本t检验或Mann-Whitney U检验比较主题差异。
# 3. 假设检验(以点击率为例)
light_ctr = df[df['Theme'] == 'Light Theme']['Click Through Rate']
dark_ctr = df[df['Theme'] == 'Dark Theme']['Click Through Rate']
t_stat, p_value = stats.ttest_ind(light_ctr, dark_ctr)
print(f"独立样本t检验结果(点击率):p值={p_value:.4f}")
4.分组分析
按地理位置和年龄段分组统计指标。
# 4. 分组分析(地理位置)
location_stats = df.groupby(['Theme', 'Location'])['Conversion Rate'].mean().unstack()
print("不同主题在各地理位置的转化率均值:")
print(location_stats)
5.年龄分箱
# 5. 年龄分箱
df['Age_Group'] = pd.cut(df['Age'], bins=[0, 20, 40, 60, 100], labels=['<20', '20-40', '40-60', '>60'])
age_group_stats = df.groupby(['Theme', 'Age_Group'], observed=False)['Conversion Rate'].mean().unstack()
age_group_stats
6. 数据可视化
6.1 matplotlib可视化
# 6. 可视化
# 点击率分布
plt.figure(figsize=(10, 6))
sns.boxplot(x='Theme', y='Click Through Rate', data=df)
plt.title('点击率分布对比(Light vs. Dark)')
plt.show()
# 地理位置转化率热力图
plt.figure(figsize=(12, 6))
sns.heatmap(location_stats, annot=True, cmap='YlGnBu')
plt.title('不同主题在各地理位置的转化率')
plt.show()
# 年龄组与转化率
plt.figure(figsize=(10, 6))
sns.barplot(x='Age_Group', y='Conversion Rate', hue='Theme', data=df)
plt.title('不同年龄组的转化率对比')
plt.show()
6.2 tableau可视化
先将处理好的数据进行保存
# 保存结果供Tableau可视化
df.to_csv("cleaned_website_data.csv", index=False)
五、分析结论和建议
1. 主题选择优化
-
结论:
- Dark Theme:点击率(53.1%)显著高于Light Theme(46.9%),且跳出率(23.22)远低于Light Theme(242.53),说明Dark Theme更能吸引用户停留。
- Light Theme:转化率略高(124.153 vs 123.159),但高跳出率可能抵消了这一优势。
-
建议:
- 优先推广Dark Theme,优化其转化路径(如简化结账流程、强化CTA按钮)。
- 对Light Theme进行用户体验审计,降低跳出率(例如优化页面加载速度、提升移动端适配性)。
2. 年龄分层策略
-
结论:
- 20-40岁用户:转化率(0.4)和点击率(0.5)最高,跳出率最低(0.2),是核心用户群体。
- 20岁和60岁用户:转化率和点击率低,跳出率高(>60岁跳出率0.7),存在明显体验障碍。
-
建议:
- 针对20-40岁用户设计个性化推荐和促销活动,进一步提升转化。
- 为<20岁用户简化注册流程,增加视觉引导;为>60岁用户提供大字体、清晰按钮和客服支持。
3. 地理位置优化
-
结论:
- Chennai和Bangalore:转化率最高(0.55和0.45),但Chennai跳出率较高(0.6)。
- Kolkata:点击率最高(0.55),但跳出率高达0.8,可能存在内容与用户需求不匹配问题。
- Pune:滚动深度最高(80),但转化率低(0.3),页面内容可能未有效引导购买。
-
建议:
- 在Chennai优化落地页内容相关性,减少无关信息以降低跳出率。
- 在Kolkata分析高跳出原因(如广告与页面内容一致性),调整营销策略。
- 在Pune加强产品推荐和限时优惠提示,将高滚动深度转化为购买行为。
4. 用户行为与购买关联
-
结论:
- 会话时(924,999秒)和滚动深度(50,319)较高,但转化率(253)和购买次数(517)未完全匹配,可能存在“浏览不购买”现象。
-
建议:
- 分析高参与度页面的用户行为路径,优化关键节点的引导(例如添加购物车提示、实时客服咨询)。
- 针对长时间浏览但未购买的用户,推送个性化折扣券或库存提醒。
5. 其他关键发现
-
转化率与点击率脱节:Dark Theme点击率高但转化率略低,需排查中间环节(如支付流程、信任标识缺失)。
-
跳出率极端差异:Light Theme的跳出率是Dark Theme的10倍以上,需紧急优化首屏内容和加载性能。
执行计划
-
立即行动:
- 对Dark Theme进行A/B测试,优化结账页面设计。
- 针对Chennai和Kolkata启动地域化内容调整项目。
-
中期策略:
- 开发年龄分层界面(如青少年模式和老年模式)。
- 部署用户行为分析工具(如热力图、Session Recording),识别流失节点。
-
长期规划:
- 建立动态主题切换功能,允许用户自主选择Light/Dark模式。
- 推动全站性能优化(如CDN加速、图片懒加载),降低全局跳出率。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)