本次项目主要围绕一家电商网站新旧页面的用户体验数据展开数据分析。

环境

win10,python 3,jupyter notebook

目录

一、项目背景

1.项目概述

2.A/B测试解读

二、数据分析

1.数据概览

2.数据清洗

2.1 缺失值查看及处理

2.2 检查逻辑错误并处理

2.3 去除重复值

三、假设检验

1.提出假设

2.为下结论设立标准

3.选择数据,计算样本统计量

4.得出结论


正文

一、项目背景

1.项目概述

本项目分析的数据集来源于一家电商网站,希望通过对新旧页面A/B测试的数据进行显著性检验分析,判断新旧两版页面在用户转化率上是否有显著区别,帮助公司决定是否应当采用新的页面,或是保留旧页面。

2.A/B测试解读

A/B 测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机地使用一个方案,收集各群组的用户体验数据和业务数据,最后根据显著性检验分析、评估出最好版本予以正式采用。

本项目将新旧版本以随机的方式同时推送给测试用户,随后可以把用户分成两组,对照组和实验组,对照组(control)体验旧页面,实验组(treatment)体验新页面,接下来再分别统计两组用户的总用户数、转化数指标等数据,根据这些样本数据进行假设检验分析。

二、数据分析

1.数据概览

import pandas as pd  #结构化数据分析工具包
import numpy as np #科学计算基础软件包
import matplotlib.pyplot as plt #图表绘制工具包
import seaborn as sns #基于 matplotlib, 导入 seaborn 会修改默认的 matplotlib 配色方案和绘图样式,提高图表的可读性和美观性
%matplotlib inline # 在 jupyter notebook 里面显示图表
ABtest.head() #查看前五行数据

ABtest.tail()

通过以上数据以及题目资料, 可以了解到数据集总共有294478行, 有以下字段:

user_ id——用户ID,具有唯一标识的作用,即一个人员对应一个id
timestamp——用户行为时间戳,记录实验时的日期和时间
group——分组标签: treatment= 实验组,control= 对照组
landing_ page——展示的页面版本,分为old_page和new_page                                                    converted——是否转化(0代表没有转化,1代表已经转化)

ABtest.info()

数据维度:294478 行 X 5 列

缺失字段: 无

数据类型: 2个64位整型, 3个python对象

ABtest.describe() #描述性统计

除了python对象以外的两列数据类型, 均参与了计算:

12.17%的人转化, 转化率不是很高

#其他列的描述性统计
ABtest[['timestamp','group','landing_page']].describe()

timestamp共有891种, 总数也891个, timestamp是唯一的

group 只有2种,对照组和实验组,unique=2 说明group列没有出现别的组名;treatment组的人更多,一共有147276个

landing_ page 列也没有出现除了old_page和new_page之外别的页面名字;但是old_page的人更多,old_page对应的是control组,说明某些记录可能出错

2.数据清洗

2.1 缺失值查看及处理

ABtest.isnull().sum()

本数据集完整程度较好,每一列都没有缺失值

2.2 检查逻辑错误并处理

之前查看到treatment组和old_page组的人更多,我们看一下是否有分组group和展示页面版本landing_page不符情况

old_error = len(ABtest[(ABtest['group'] == 'treatment') & (ABtest['landing_page'] == 'old_page')])
new_error = len(ABtest[(ABtest['group'] == 'control') & (ABtest['landing_page'] == 'new_page')])
print('实验组看到旧页面的人数:{}, 对照组看到新页面的人数:{}'.format(old_error,new_error))

实验组看到旧页面的人数:1965, 对照组看到新页面的人数:1928

把这些错误对应的数据删除

ABtest = ABtest[((ABtest['group'] == 'treatment') & (ABtest['landing_page'] == 'new_page'))| ((ABtest['group'] == 'control') & (ABtest['landing_page'] == 'old_page'))]

再验证一下是否还有对应错误的数据

old_error = len(ABtest[(ABtest['group'] == 'treatment') & (ABtest['landing_page'] == 'old_page')])
new_error = len(ABtest[(ABtest['group'] == 'control') & (ABtest['landing_page'] == 'new_page')])
print('实验组看到旧页面的人数:{}, 对照组看到新页面的人数:{}'.format(old_error,new_error))

实验组看到旧页面的人数:0, 对照组看到新页面的人数:0

逻辑错误处理完毕

2.3 去除重复值

ABtest.drop_duplicates(inplace=True,keep="first") #仅保留第一条
ABtest.reset_index()
ABtest.info()

最后只剩下290585行数据

再看一下两组的用户占比

percent1=len(ABtest[ABtest.landing_page=="old_page"])/len(ABtest)
percent2=len(ABtest[ABtest.landing_page=="new_page"])/len(ABtest)
print('看到旧页面的用户占比:','%.2f%%'%(percent1*100))
print('看到新页面的用户占比:','%.2f%%'%(percent2*100))
看到旧页面的用户占比: 49.99%
看到新页面的用户占比: 50.01%

两组用户各占50%左右,流量分配相对均衡

三、假设检验

1.提出假设

在本项目中验证的是实验组和控制组的转化率哪一个更大,那么可以提出假设:

虚无假设 H0:  p_old ≥ p_new

备择假设 H1:  p_old < p_new

2.为下结论设立标准

本项目为一个显著水平为0.05的单侧检验

(1)拒绝域由绝对值大于1.64的z分数决定;

(2)若p值大于0.05,无法拒绝虚无假设,新页面转化率小于或等于旧页面转化率;p值小于0.05则拒绝虚无假设,新页面转化率大于旧页面转化率。

3.选择数据,计算样本统计量

先计算一下样本中的转化率

convert_old = ABtest.query('landing_page=="old_page"').query('converted==1').shape[0]
convert_new = ABtest.query('landing_page=="new_page"').query('converted==1').shape[0]
n_old = ABtest.query('landing_page=="old_page"').shape[0]
n_new = ABtest.query('landing_page=="new_page"').shape[0]
p_old = convert_old / n_old
p_new = convert_new / n_new
print('旧页面的转化率是',p_old)
print('新页面的转化率是',p_new)
旧页面的转化率是 0.1203863045004612
新页面的转化率是 0.12299137711529065
import statsmodels.api as sm
from scipy.stats import norm
z_score, p_value = sm.stats.proportions_ztest([convert_old, convert_new], [n_old, n_new],alternative='smaller')
print('z分数是:{}  p值是{}'.format(z_score,p_value))
print('显著性水平为0.05对应的z分数是',norm.ppf(0.05))
z分数是:-2.147714741889884  p值是0.015868211766816118
显著性水平为0.05对应的z分数是 -1.6448536269514729

4.得出结论

本例中的z分数绝对值(2.15)大于显著性水平为0.05对应的z分数绝对值(1.64),并且p值(0.016)小于0.05,所以拒绝虚无假设,新页面转化率大于旧页面转化率,公司应该选择新页面。

利用Python分析新旧页面的A/B测试结果相关推荐

  1. 利用Python分析航空公司客户价值

      利用Python分析航空公司客户价值 一.背景介绍 随着社会生活中数据量的急剧增多,如何从这些海量的数据中提取与发掘出对我们决策有用的信息成为当前亟待解决的题,因此,数据分析与挖掘技术在这些年得到 ...

  2. 数据分析作业(一)利用Python分析学生成绩

    利用Python分析学生成绩 一.题目描述 二.解题步骤 运行环境 题目分析 三.完整代码 四.运行结果 五.参考文献 附录 附录A 更新记录 附录B 相关练习题目 练习一:读取Excel文件数据表分 ...

  3. python单词软件哪个好_利用Python分析背单词软件的惊人真相

    摘要:利用python分析背单词软件,揭秘你不知道的惊人真相 0×00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛 ...

  4. 利用Python分析《庆余年》人物图谱和微博传播路径

    利用Python分析<庆余年>人物图谱和微博传播路径 庆余年电视剧终于在前两天上了,这两天赶紧爬取微博数据看一下它的表现. 庆余年 <庆余年>是作家猫腻的小说.这部从2007年 ...

  5. 利用Python分析文章词频,并生成词云图

    利用Python分析文章词频,并生成词云图 使用request模块获取文章数据 import jieba import requests import csv from bs4 import Beau ...

  6. 利用python分析电商_Python实现爬取并分析电商评论

    现如今各种APP.微信订阅号.微博.购物网站等网站都允许用户发表一些个人看法.意见.态度.评价.立场等信息.针对这些数据,我们可以利用情感分析技术对其进行分析,总结出大量的有价值信息.例如对商品评论的 ...

  7. 利用 Python 分析城市各区域楼盘

    文章目录 1. 项目目标 2. 信息爬取 2.1 房产网站 URL 分析 2.2 楼盘列表页爬取 2.3 楼盘详情页爬取 2.4 保存文件 2.5 提高代码运行速度 3. 数据分析 3.1 数据清洗 ...

  8. python财务报表分析-浅谈利用Python分析财报找到值得投资的好公司的想法

    17年12月份接触到了007战友林晓燕老师的不读财报不出局,才知道投资股票还有那么多门道,也了解到了MJ老师挑选股票的标准--五大关键数字力. 跟着林老师开始学习财报以来,老是觉得光靠人工来挑选符合& ...

  9. ppt python 图表_利用python分析weibo数据做成图表放入PPT中

    起因 很久以前,就有个想法,就是自动分析微博的数据,但是之前一直想的是网页版展示,flask想学了好久都没学,偶然的一次看到了一篇关于python处理pptx的文章,再加上同窗三年的室友在毕业后竟然主 ...

  10. 利用Python实现新冠疫情数据可视化(获取疫情历史数据,制作南丁格尔玫瑰图、疫情地图、动态疫情组合图、词云)

    文章目录 前言 1.获取疫情历史数据 2.制作南丁格尔玫瑰图 2.1 全球各国确诊人数玫瑰图 2.2 全国各省市零新增天数玫瑰图 3.制作疫情地图 3.1全国各省市目前确诊总人数疫情地图 3.2全球各 ...

最新文章

  1. HTML--三种样式插入方法--链接---表格---列表
  2. 玩转oracle 11g(10):初步了解Rman备份
  3. wget for windows 下载与安装
  4. [转]自己写PHP扩展之创建一个类
  5. (转载)Sybase:bcp命令参考
  6. C/C++ 文件读取操作 竞赛篇
  7. 学习用MaxScipt批处理Max文件
  8. A星算法优化(一)启发函数
  9. 如何巧妙将流量转化为销量?
  10. 联想服务器管理系统,联想服务器的系统监控软件easyManage
  11. Pr 音频效果参考:混响
  12. IOS越狱插件汉化工具
  13. 如何注册 MSDN AA
  14. 心怀远方,顶峰相见!!!
  15. 如何使用JavaScript导入和导出Excel文件
  16. 词汇课程——导论(2)
  17. [bzoj4605]崂山白花蛇草水 k-d tree 带替罪羊重构
  18. 无线通信模块——WiFi,蓝牙,2.4G
  19. 哈工大深圳计算机自动化专业,欢迎报考哈工大深圳研究生院自动化系
  20. python全栈生鲜电商_Django REST framework+Vue 打造生鲜电商项目(笔记十)

热门文章

  1. Adjoin the Networks
  2. 动态规划法 第5关:矩阵连乘问题
  3. hp服务器修改bios做系统,hp 服务器bios设置
  4. 老舍:有了小孩以后,才知道一切事情没那么简单
  5. efcore微软官方文档
  6. 计算机每次启动都要系统修复,win7电脑每次开机都要重启路由器才能上网的修复方法...
  7. 2020春节假期延长至正月初九(2月2日)
  8. 金域医学与华为云联合,AI辅助宫颈癌筛查方案获得阶段性突破
  9. 小米MIUI线刷包cust.img、system.img精简教程(一)
  10. Chromecast 播放电脑本地视频