Python淘宝电商双十二用户购物行为数据分析策略报告(附代码)

        使用Python、Numpy、Pandas和Matplotlib与seaborn包对电商双十二用户购物行为进行可视化分析,并根据报告提出相应策略

除数据处理外,所有的代码附分析报告后

目录

一、数据来源

二、数据处理

三、流量分析可视化及策略提出

日PV与UV分析

周PV与UV分析

小时PV与UV分析

四、漏斗模型转化率

五、ARPU与ARPPU分析

六、总结策略

七、全文代码


一、数据来源

数据集来源自淘宝用户购物行为数据可视化分析_数据集-阿里云天池 (aliyun.com)

通过查看数据前五行可以得到,数据集列依次为用户id、商品id、用户状态、商品类目、操作时间五列

其中behavio_type用户状态1-4分别代表浏览、收藏、加入购物车、下单

time时间精确至小时

二、数据处理

 运行结果可见数据集无空数值,下面对time列进行拆分与转换必要数据的类型

#加载文件
shoping = pd.read_csv(r"D:\BaiduNetdiskDownload\user_action.csv")
print(shoping.head(5))
#清洗与处理
#查看基本信息、检查数据异常
print(shoping.isnull().sum()) #查看空值数量
print(shoping.dtypes) #查看数据类型
shoping["day"] = shoping["time"].map(lambda x: x.split(' ')[0])  #对time列迭代,执行对空格分割操作分为两列,日期列与小时列
shoping["hour"] = shoping["time"].map(lambda x: x.split(' ')[1])

shoping['user_id'] = shoping['user_id'].astype('object')         #将uid改类型
shoping['day'] = pd.to_datetime(shoping["day"].astype("str"))    #将day日期列换为str再换为datatime
shoping['hour'] = shoping["hour"].astype("int64")

三、流量分析可视化及策略提出

PV(页面浏览量),衡量网站的曝光率与点击量

UV(独立访客数),访问网站的用户数

通过对PV与UV的分析,可以获知当前网站的流量整体访问情况

日PV与UV分析

通过日pv与uv图可以得出以下结论:

1、2014年12月12日网站流量达到时期峰值,证明双十二活动为电商网站带来巨大流量

2、pv与uv的峰值与谷底日期基本相同,符合常理。

周PV与UV分析

注:0为周一,依次为周二到周日

通过周PV与UV图,发现了一些有趣的地方

1、UV独立访客数均匀分布在全周,证明电商网站流量稳定,有一批活跃稳定浏览的客户。

2、周二三四PV较其他时间多,结合第一条uv均匀分布,可以推断出周二至周四客户更多的在不同商品页间浏览以及进行加购下单等其他操作,即投入的时间较多,同时也不排除在这段时间内周二至周四期间有增加顾客活跃的活动。

3、周末pv较少,可能因为有更多的休闲时间,选择进行其他活动而不是频繁地浏览网站。

策略:

1、可以尝试在周二至四间针对商品推出促销等活动,提升转化率。

2、考虑周末顾客空闲时间多但PV少,可对周末期间推出更大的商品推荐活动与广告投入等,提高周末期间的访问量,从而提升转化率。

小时PV与UV分析

结论:

1、UV峰值保持在10点-22点区间,但PV是在18点之后大幅上涨至21-22点峰值,表明顾客在下班后将更多时间频繁投入到网站的活跃行为当中。

2、从0点过后至6点,PV与UV均处于下降至谷底状态,符合睡眠时间低谷。

策略:

1、将大部分的促销活动、发布重磅产品促销等复杂活动放在18时之后,保证顾客有时间充分参与。

2、结合0-6点客户下单数据,推送一些针对熬夜人群冲动消费的商品,提高转化率。

四、漏斗模型转化率

结论:
收藏/浏览 = 0.021 加购物车/收藏 = 1.349877 购物车/下单 = 0.349

五、ARPU与ARPPU分析

ARPU(平均用户收入)评估业务的盈利能力和用户价值,即每日活跃用户对每日收益的转化效率。,ARPU = 总收入 / 用户数量,这里使用数据集中的每日下单总次数来代替总收入。

ARPPU(平均付费用户收入),衡量每个付费用户产生的平均收入。

从ARPU图可以看出,ARPU值除双12外,均处于0.5至0.6区间内,表明活跃用户每日下单平均在0.5到0.6单左右。

从ARPPU图可以看出,大部分值位于2.21-2.52之间,表明对于大多数活跃消费用户,平均每日消费次数为2.21-2.52次。

六、总结策略

综合以上数据分析,可以提出以下策略

1、可以尝试在周二至四间针对商品推出促销等活动,提升转化率。

2、考虑周末顾客空闲时间多但PV少,可对周末期间推出更大的商品推荐活动与广告投入等,提高周末期间的访问量,从而提升转化率。

3、将大部分的促销活动、发布重磅产品促销等复杂活动放在18时之后,保证顾客有时间充分参与。

4、结合0-6点客户下单数据,推送一些针对熬夜人群冲动消费的商品,提高转化率。

七、全文代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
from pyecharts.charts import Line
import os
import seaborn as sns

#加载文件
shoping = pd.read_csv(r"D:\BaiduNetdiskDownload\user_action.csv")
print(shoping.head(5))
#清洗与处理
#查看基本信息、检查数据异常
print(shoping.isnull().sum()) #查看空值数量
print(shoping.dtypes) #查看数据类型

shoping["day"] = shoping["time"].map(lambda x: x.split(' ')[0])  #对time列迭代,执行对空格分割操作分为两列,日期列与小时列
shoping["hour"] = shoping["time"].map(lambda x: x.split(' ')[1])

shoping['user_id'] = shoping['user_id'].astype('object')         #将uid改类型
shoping['day'] = pd.to_datetime(shoping["day"].astype("str"))    #将day日期列换为str再换为datatime
shoping['hour'] = shoping["hour"].astype("int64")
shoping['weekday'] = shoping["day"].dt.weekday

# print(shoping.head(5))
#第一部分、用户流量分析
#pv与uv画图数据准备
day_pv = shoping['user_id'].groupby(shoping['day']).count()          #用day来聚合uid计数
day_uv = shoping['user_id'].groupby(shoping["day"]).apply(lambda x: len(x.unique()))  #对每个uid进行unique去重相加后用len计数
#unique与sql中的一样,返回一组去重的数组,在这里返回去重后的id,再用len计算长度
day_pv = day_pv.reset_index()               #重设index
day_uv = day_uv.reset_index()

weekday_pv = shoping["user_id"].groupby(shoping["weekday"]).count()      #周pv与uv
weekday_uv = shoping['user_id'].groupby(shoping["weekday"]).apply(lambda x: len(x.unique()))
weekday_pv = weekday_pv.reset_index()
weekday_uv = weekday_uv.reset_index()
# print(f'pv:{day_pv},uv{day_uv}')
print(weekday_pv)

#日pv与uv图
sns.set_style("darkgrid")                 #sns画图风格
plt.figure(figsize = (12, 6))             #创建画布
plt.subplot(121)
sns.lineplot(x=day_pv['day'],y=day_pv['user_id'])
plt.xlabel("日期")
plt.ylabel('pv')
plt.rcParams['font.sans-serif']=['SimHei']  #将中文设置为黑体
plt.xticks(rotation=45)
plt.title("日PV")

plt.subplot(122)
sns.lineplot(x=day_uv['day'],y=day_uv['user_id'])
plt.xlabel("日期")
plt.ylabel('uv')
plt.title("日UV")
plt.rcParams['font.sans-serif']=['SimHei']
plt.xticks(rotation=45)
plt.show()

#周pvuv
sns.set_style("darkgrid")                 #sns画图风格
plt.figure(figsize = (12, 6))             #创建画布
plt.subplot(121)
sns.barplot(x=weekday_pv['weekday'],y=weekday_pv['user_id'])
plt.xlabel("周")
plt.ylabel('pv')
plt.rcParams['font.sans-serif']=['SimHei']      #将中文设置为黑体
plt.xticks(rotation=45)
plt.title("周PV")

plt.subplot(122)
sns.barplot(x=weekday_uv['weekday'],y=weekday_uv['user_id'])
plt.xlabel("周")
plt.ylabel('uv')
plt.title("周UV")
plt.rcParams['font.sans-serif']=['SimHei']
plt.xticks(rotation=45)
plt.show()

#每小时pv与uv
hour_pv = shoping['user_id'].groupby(shoping['hour']).count()          #用day来聚合uid计数
hour_uv = shoping['user_id'].groupby(shoping["hour"]).apply(lambda x: len(x.unique()))
hour_uv = hour_uv.reset_index()
hour_pv = hour_pv.reset_index()
#小时pvuv图
sns.set_style("darkgrid")
plt.figure(figsize = (12, 6))
plt.subplot(121)
plt.xticks(rotation=45)
sns.lineplot(x=hour_pv['hour'],y=hour_pv['user_id'])
plt.xlabel("小时")
plt.ylabel("用户浏览数")
plt.title("小时pv数据图")
plt.rcParams['font.sans-serif']=['SimHei']

plt.subplot(122)
plt.xticks(rotation=45)
sns.lineplot(x=hour_uv['hour'],y=hour_uv['user_id'])
plt.xlabel("小时")
plt.ylabel("用户浏览数")
plt.title("小时uv数据图")
plt.rcParams['font.sans-serif']=['SimHei']
plt.show()

#第二部分 漏斗模型
#计算各阶段人数
hopper = shoping["user_id"].groupby(shoping['behavior_type']).count()
hopper = pd.DataFrame(hopper)
hopper = hopper.reset_index()
hopper.columns = ["状态","用户数"]
hopper["转换率"] = hopper["用户数"].shift(-1)/hopper["用户数"]     #shift()为当前行往后移
print(hopper)
#收藏/浏览 = 0.021 加购物车/收藏 = 1.349877 购物车/下单 = 0.349

#第三部分 ARPU与ARPPU
#ARPU = 总收入 / 每日活跃用户数,计算每日活跃用户对每日收益的转化率。数据中无相关金额数据,替换为ARPU = 每日消费总次数 / 每日活跃用户数
#ARPPU = 总收入/ 付费活跃用户数量 同理换为每日消费总次数
#计算日ARPU
sp = shoping[shoping["behavior_type"]==4]            #筛选出消费用户的id
sp_number = sp["user_id"].groupby(sp["day"]).count() #计算每日消费的用户数
user_1 = shoping["user_id"].groupby(shoping["day"]).unique().apply(len)  #每日活跃用户(去重)id集合,并用len计数
user_2 = sp["user_id"].groupby(sp["day"]).unique().apply(len)    #每日付费活跃用户数
day_ARPU = sp_number/user_1
day_ARPPU = sp_number/user_2
print(day_ARPU)
print(day_ARPPU)

#ARPU与ARPPU图
day_ARPPU = day_ARPPU.reset_index()
day_ARPU = day_ARPU.reset_index()

plt.figure(figsize = (12, 6))
plt.subplot(121)
plt.xticks(rotation=45)
plt.xlabel("日期")
plt.ylabel("ARPU")
plt.title("ARPU图")
sns.lineplot(x=day_ARPU["day"],y=day_ARPU["user_id"])

plt.subplot(122)
plt.xlabel("日期")
plt.ylabel("ARPPU")
plt.title("ARPPU图")
plt.xticks(rotation=45)
sns.lineplot(x=day_ARPPU["day"],y=day_ARPPU["user_id"])
plt.show()

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值