目录
一、前言
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<