[Python] A/B Test 项目实践


一、前言

1. 数据来源

数据来源:https://blog.csdn.net/weixin_43329700/article/details/108328842

  • Python版本:3.7.1
  • Pycharm版本:社区版2019.2
  • 背景:以下是某公司网站的客户漏斗模型:浏览主页 → \to 浏览课程概述页面(课程首页) → \to 注册课程 → \to 付费并完成课程。
    越深入漏斗模型,该网站就的用户就会流失得越多,到最后完成付费的用户是较少的。为了提高参与度,提高各个环节之间的转化率。公司的管理人员作出了一些改变,并且进行了A/B Test,同时根据结果决定最终是否实现网站页面的改版。

2. 字段介绍

字段名 解释
timestamp 浏览时间
id 用户编号
group 所属组别
action 用户行为,view是用户仅浏览,enroll是用户浏览并且注册
duration 浏览界面时长

二、数据导入

1. 相关模块

import pandas as pd
import random
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import *
from scipy import stats
import statsmodels.api as sm

2. 数据导入

io = '.../course_page_actions.csv'
df = pd.DataFrame(pd.read_csv(io, parse_dates=[0]))
# 新增时间列
df['hour'] = df['timestamp'].dt.hour

print(df.head())
print(df.info())
print(df.count())

输出结果如下。

                   timestamp      id       group action    duration  hour
0 2016-09-24 17:14:52.012145  261869  experiment   view  130.545004    17
1 2016-09-24 18:45:09.645857  226546  experiment   view  159.862440    18
2 2016-09-24 19:16:21.002533  286353  experiment   view   79.349315    19
3 2016-09-24 19:43:06.927785  842279  experiment   view   55.536126    19
4 2016-09-24 21:08:22.790333  781883  experiment   view  204.322437    21
--------------------------------------------------------------------------

Data columns (total 6 columns):
 #   Column     Non-Null Count  Dtype         
---  ------     --------------  -----         
 0   timestamp  4049 non-null   datetime64[ns]
 1   id         4049 non-null   int64         
 2   group      4049 non-null   object        
 3   action     4049 non-null   object        
 4   duration   4049 non-null   float64       
 5   hour       4049 non-null   int64  
 --------------------------------------------------------------------------
timestamp    4049
id           4049
group        4049
action       4049
duration     4049
hour         4049

三、探索性分析

1. 控制/实验组的访问数据对比

df_view = df[(df['action'] == 'view')]
# 绘图
sns.set(palette="muted", color_codes=True)    # seaborn样式
plt.rcParams['axes.unicode_minus'] = False    # 解决无法显示负号的问题
sns.set(font='SimHei', font_scale=0.8<
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值