4、模型构建
1)流量指标的处理
pv:指的是页面总浏览量。每个用户每刷新一次网页,就会增加一次pv。
uv:指的是独立访客数。一台电脑一个ip也就是一个独立访客。实际分析中,我们都是认为每个人只使用一台电脑,即每一个独立访客代表一个用户。
① 总计pv和uv
total_pv = df["user_id"].count() total_pv total_uv = df["user_id"].nunique() total_uv
结果如下:
结果分析:从图中可以看到,该网站页面的总浏览量为12256906次,该页面的独立访客数共有10000个。
② 日期维度下的uv和pv:uv表示页面总浏览量,pv表示独立访客数
pv_daily = df.groupby("date")['user_id'].count() pv_daily.head(5) uv_daily = df.groupby("date")['user_id'].apply(lambda x: x.nunique()) # uv_daily = df.groupby("date")['user_id'].apply(lambda x: x.drop_duplicates().count()) uv_daily.head() pv_uv_daily = pd.concat([pv_daily,uv_daily],axis=1) pv_uv_daily.columns = ["pv","uv"] pv_uv_daily.head() # 绘图代码如下 plt.figure(figsize=(16,10)) plt.subplot(211) plt.plot(pv_daily,c="r") plt.title("每天页面的总访问量(PV)") plt.subplot(212) plt.plot(uv_daily,c="g") plt.title("每天页面的独立访客数(UV)") #plt.suptitle("PV和UV的变化趋势") plt.tight_layout() plt.savefig("PV和UV的变化趋势",dpi=300) plt.show()
结果如下:
绘图如下:
结果分析:从图中可以看出,pv和uv数据呈现高度的正相关。双12前后,pv和uv都在350000-400000之间波动,双十二的时候,页面访问量急剧上升,证明这次活动的效果很好。
③ 时间维度下的pv和uv
pv_hour = df.groupby("hour")['user_id'].count() pv_hour.head() uv_hour = df.groupby("hour")['user_id'].apply(lambda x: x.nunique()) uv_hour.head() pv_uv_hour = pd.concat([pv_hour,uv_hour],axis=1) pv_uv_hour.columns = ["pv_hour","uv_hour"] pv_uv_hour.head() # 绘图代码如下 plt.figure(figsize=(16,10)) pv_uv_hour["pv_hour"].plot(c="steelblue",label="每个小时的页面总访问量") plt.ylabel("页面访问量") pv_uv_hour["uv_hour"].plot(c="red",label="每个小时的页面独立访客数",secondary_y=True) plt.ylabel("页面独立访客数") plt.xticks(range(0,24),pv_uv_hour.index) plt.legend(loc="best") plt.grid(True) plt.tight_layout() plt.savefig("每个小时的PV和UV的变化趋势",dpi=300) plt.show()
结果如下:
绘图如下:
结果分析:从图中可以看出,晚上22:00-凌晨5:00,页面的访问用户数量和访问量逐渐降低,该时间段很多人都是处在休息之中。而从早上6:00-10:00用户数量逐渐呈现上升趋势,10:00-18:00有一个比较平稳的状态,这个时间段是正常的上班时间。但是18:00以后,一直到晚上22:00,用户剧烈激增,一直达到一天中访问用户数的最大值。运营人员可以参考用户的活跃时间段,采取一些促销活动。
2)用户行为指标
① 总计点击、收藏、添加购物车、支付用户的情况
type_1 = df[df['behavior_type']=="1"]["user_id"].count() type_2 = df[df['behavior_type']=="2"]["user_id"].count() type_3 = df[df['behavior_type']=="3"]["user_id"].count() type_4 = df[df['behavior_type']=="4"]["user_id"].count() print("点击用户:",type_1) print("收藏用户:",type_2) print("添加购物车用户:",type_3) print("支付用户:",type_4)
结果如下:
结果分析:从图中可以看到,用户进行页面点击–>收藏和加如购物车–>支付,逐渐呈现下降趋势。关于这方面的分析,将在下面的漏斗图中继续更为深入的说明。
② 日期维度下,点击、收藏、添加购物车、支付用户的情况
pv_date_type = pd.pivot_table(df,index='date', columns='behavior_type', values='user_id', aggfunc=np.size) pv_date_type.columns = ["点击","收藏","加入购物车","支付"] pv_date_type.head() # 绘图如下 plt.figure(figsize=(16,10)) sns.lineplot(data=pv_date_type[['收藏', '加入购物车', '支付']]) plt.tight_layout() plt.savefig("不同日期不同用户行为的PV变化趋势",dpi=300) plt.show()
结果如下:
绘图如下:







