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()
结果如下:
绘图如下:
③ 时间维度下,点击、收藏、添加购物车、支付用户的情况
pv_hour_type = pd.pivot_table(df,index='hour', columns='behavior_type', values='user_id', aggfunc=np.size) pv_hour_type.columns = ["点击","收藏","加入购物车","支付"] pv_hour_type.head() # 绘图如下 plt.figure(figsize=(16,10)) sns.lineplot(data=pv_hour_type[['收藏', '加入购物车', '支付']]) pv_hour_type["点击"].plot(c="pink",linewidth=5,label="点击",secondary_y=True) plt.legend(loc="best") plt.tight_layout() plt.savefig("不同小时不同用户行为的PV变化趋势",dpi=300) plt.show()
结果如下:
绘图如下:
④ 支付次数前10的用户行为细分
df["user_id1"] = df["user_id"] buy_first = pd.pivot_table(df,index='user_id', columns='behavior_type', values='user_id1', aggfunc="count") buy_first.columns = ["点击","收藏","加入购物车","支付"] buy_first_10 = buy_first.sort_values(by="支付",ascending=False)[:10] buy_first_10 # 绘制图形如下 plt.figure(figsize=(16,10)) plt.subplot(311) plt.plot(buy_first_10["点击"],c="r") plt.title("点击数的变化趋势") plt.subplot(312) plt.plot(buy_first_10["收藏"],c="g") plt.title("收藏数的变化趋势") plt.subplot(313) plt.plot(buy_first_10["加入购物车"],c="b") plt.title("加入购物车的变化趋势") plt.xticks(np.arange(10),buy_first_10.index) plt.tight_layout() plt.savefig("支付数前10的用户,在点击、收藏、加入购物车的变化趋势",dpi=300) plt.show()
结果如下:
绘图如下:
结果分析:通过这个分析,我们可以看出,购买次数最多的用户,点击、收藏、加入购车的次数不一定是最多的,
⑤ ARPPU分析:平均每用户收入,即可通过“总收入/AU” 计算得出
total_custome = df[df['behavior_type'] == "4"].groupby(["date","user_id"])["behavior_type"].count()\ .reset_index().rename(columns={"behavior_type":"total"}) total_custome.head() total_custome2 = total_custome.groupby("date").sum()["total"]/\ total_custome.groupby("date").count()["total"] total_custome2.head(10) # 绘图如下 x = len(total_custome2.index.astype(str)) y = total_custome2.index.astype(str) plt.plot(total_custome2.values) plt.xticks(range(0,30,7),[y[i] for i in range(0,x,7)],rotation=90) plt.title("每天的人均消费次数") plt.tight_layout() plt.savefig("每天的人均消费次数",dpi=300) plt.show()
结果如下:
绘图如下: