AB测试被广泛应用于互联网公司的优化迭代, 每年数万个AB实验被Google、Amazon、Facebook、字节跳动,阿里等主流互联网公司应用于线上进行UI内容优化、算法优化等等。
在学生进行求职时,往往很多情况下,会收到关于AB测试的48小时测试作业。所谓48小时的作业的作业,就是公司会在规定时间内发送一份csv或者excel形式的数据表格,要求学生在48小时做完后提交作业。提交内容包括,分析的code,和总结分析和建议的ppt。
这类作业对求职的学生要求是非常高的,对其是对时间的把握。48小时把一个分析最透彻并提出建议不是一件容易的事。
我培训的好多应届求职同学,都把大量的时间花在整理数据上或者作图上,导致后面分析的部分来不急做。
今天我们就来看看如何快速计算和可视化AB测试的结果。
我们先看下AB测试的原数据
故名思议,AB测试,就是分成2组,图中第二列,test就分成了test group 和 control group 2组。
举个例子,上面图表,test组看了红色页面的网站,control组看了蓝色页面的网站。
做这个实验的最终目的是,是想知道,看了红色网站的用户,购买率高,还是看了蓝色网站用户的购买率高。
其中,是否购买为图中的第三列conversion,1代表购买,0代表没有购买。
我们分析的时候,通常要看conversion rate,也就是 #该组购买人/#该组总人数,同时我们还会关注样本量即该组总人数。
所以从可视化来看应该是如下:
如果我们还需要单维度的细分分析,比如看看设备终端对购买率有没有什么影响,
我们需要这样作图。
同学要问了,这类图应该用什么工作来华呢?
我们现在先用Excel来看看这类题目该怎么解答。
(很多应届同学没有用过pivot table,这里花一些篇幅介绍一下pivot table)
1)用 pivot table
选insert -> Pivot table -> okay
- 每组的人数
将test 列已到columns,将conversion移到values,并点击values下方的i选择count,这样可以得出样本量。
- 每组的购买的人
将test 列已到columns,将conversion移到values,并点击values下方的i选择sum,这样可以得购买的人。
- 每组的购买率
5) 作图
如果我们把设备终端,国家也用上述方法做的话,
大致算了一下,一个维度大致花5分钟从做表到图,
如果20个维度呢?
5*20分钟 = 100分钟
万一你发现有80%的数据,没有什么进一步分析意义。
是不是觉得这个时间是浪费了?
我们现在介绍一个快速方法,就是用少于5分钟的时间,把每个维度都分析一遍,并作图。
import numpy as np
import pandas as pd
import seaborn as sns
import warnings
sns.set_style("whitegrid")
import matplotlib.pyplot as plt
df = pd.read_csv('./df.csv')
for i in ['test','source','device','browser_language','ads_channel','browser','sex','age','country']:
fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(18, 6))
sns.countplot(x=i, hue='test', data=df, ax=ax[0])
sns.barplot(x=i, y='conversion', hue='test', data=df, ci=None, ax=ax[1])
ax[0].set_title('Count Plot of '+ i, fontsize=16)
ax[1].set_title('Conversion Rate of ' + i, fontsize=16)
plt.tight_layout()
是不是5分钟都不需要?我们那就能把所有维度展示出来?
这样我们就能把更多的时间花在分析上,充分的利用48小时了。
完。