discuz设置用户每天回帖数_电商用户行为数据分析

b3b487df372ef1452c45618a1cb3f1ec.png

1.提出问题

1)每天的访问量是多少?

2)每天的访客数是多少?

3)每天的平均访问量是多少?

4)每天新增用户数是多少?

5)转化率是多少?

6)复购率是多少?包括复购用户量、复购率和复购金额比

7)GMV = UV * 转化率 * 客单价 (无订单数据信息,这里不做分析)

2. 理解数据

1)数据来源

https://tianchi.aliyun.com/dataset/dataDetail?dataId=649

本数据集包含了2017年11月25日至2017年12月3日之间,有行为的约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。一共100150807 条行为数据,其中包含:用户数量 - 987994,商品数量 - 4162024,商品类目数量 - 9439

2)数据字段信息说明:

d537490bd062ef40f47de6d0a4ca3b6e.png

注意到用户行为共有四种,分别是:

c7b10a882fa8bcd28de4b0815667e740.png

3. 数据清洗

import pandas as pd
import numpy as np
import time
import datetime
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签


filePath = r'F:数据分析数据UserBehavior.csv'
df = pd.read_csv(filePath,names=['userId','itemId','categoryId','behaviorType','timestamp'], encoding='utf-8' ,engine='python',iterator=True)

#1、选取样本,这里数据集量大,选取5000000条数据分析
data = df.get_chunk(5000000)
data.head()

#2.重复数据处理
data = data.drop_duplicates()

#3.缺失数据处理
data = data.dropna()

#4.数据类型转换
#数据类型查看
data.dtypes
#将时间戳转换为时间
def stamp2time(timestamp):
    return time.strftime('%Y-%m-%d',time.localtime(timestamp))

data['datestamp'] = data['timestamp'].apply(stamp2time)

#转成datetime
data['datestamp'] = pd.to_datetime(data['datestamp'])

#5.数据排序
#按时间进行升序排序
data = data.sort_values(by='datestamp',ascending=True,na_position='first')

#6.异常值处理,去除2017年11月25日至2017年12月3日之之外
dt1 = datetime.datetime(year=2017,month=11,day=25);
dt2 = datetime.datetime(year=2017,month=12,day=3);

data = data[(data.datestamp>=dt1) & (data.datestamp<=dt2)]

4. 构建模型

业务指标1:每天的访问量是多少

pvData = data[data.behaviorType=='pv'].groupby(by=['datestamp'])['timestamp'].count().reset_index()
pvData.rename(columns = {'datestamp':'日期','timestamp':'访问量'},inplace=True)
pvData['日期'] = pvData['日期'].dt.strftime('%m-%d')

# 建立一个坐标轴
plt.subplot(1,1,1)
#指明x和y的值
x = pvData["日期"]
y = pvData["访问量"]
# 绘图 
plt.plot(x,y,color="r",label="访问量")
# 设置标题
plt.title("玲光公司11月25日~12月3日访问量",loc="center")   

# 设置x/y轴名称
plt.xlabel("日期")
plt.xlabel("访问量")
# 设置x/y轴的坐标轴范围
plt.ylim(300000,700000)
# 设置图例
plt.legend()

c0ea56e1a4e6655c9ba992d4424a2354.png

可以看到,12月2日和12月3日用户访问量明显增多,这两天为周末,但是11月25日和11月26日同为周末,但其访问量也只是与11月30日和12月1日持平。猜测12月2日和12月3日这两天电商平台有做促销活动引流,或者有新渠道加入让新客涌入。

业务指标2:每天的访客数是多少

user = data[['userId','datestamp']].drop_duplicates()
uvData = user.groupby(by=['datestamp'])['userId'].count().reset_index()
uvData.rename(columns = {'datestamp':'日期','userId':'访客数'},inplace=True)
uvData['日期'] = uvData['日期'].dt.strftime('%m-%d')
# 建立一个坐标轴
plt.subplot(1,1,1)
#指明x和y的值
x = uvData["日期"]
y = uvData["访客数"]
# 绘图 
plt.plot(x,y,color="r",label="访客数")
# 设置标题
plt.title("玲光公司11月25日~12月3日访客数",loc="center")   
# 设置x/y轴名称
plt.xlabel("日期")
plt.xlabel("访客数")
# 设置x/y轴的坐标轴范围
plt.ylim(20000,60000)
# 设置图例
plt.legend()

3d04038cc25e9d7eadbfd01881af6ee8.png

其访客数与访问量趋势一致,12月2日和12月3日购物的用户人数较平时增加了约34%,猜测这两天访问量增加是访客数增加所致。

业务指标3:每天的人均访问量是多少?

meanDayPv = pd.merge(pvData,uvData,how='inner',on='日期')
meanDayPv['人均访问量'] = meanDayPv["访问量"].div(meanDayPv["访客数"])

5cf0e3ebb973cad2dee6d7b84602e7ee.png

每天每个用户的平均访问量基本约为13,12月2日和12月3日也没有增加,说明12月2日和12月3日这两天访问量增加只是因为访客数增加。

业务指标4:每天新增用户数是多少?

#用户按日期排序
user['datestamp'] = user['datestamp'].dt.strftime('%m-%d')
user = user.sort_values(by='datestamp',ascending=True,na_position='first')
#重置索引
user = user.reset_index(drop=True)
n_user = []
newUser = pd.DataFrame(index=['新增用户数'],columns=uvData.日期)
newUser = newUser.fillna(0)
index = 0
for i in user.index:
    if user.loc[i,'userId'] not in n_user:
        datestamp = user.loc[i,'datestamp']
        newUser[datestamp] = newUser[datestamp]+1
    n_user.append(user.loc[i,'userId'])
    index = index + 1

newUser = newUser.T

新增用户数统计:

3e299ba580acaf32d7b16fd933229b75.png

可以看到,12月2日和12月3日,访客数最多的时候,基本没有新增用户,所以不是因为新客涌入导致访客数增加。

业务指标5:转化率是多少?

1)用户行为漏斗分析

#pv总量
pvCount = pvData['访问量'].sum()
#fav总量
favCount = data[data.behaviorType=='fav']['userId'].count()
#cart总量
cartCount = data[data.behaviorType=='cart']['userId'].count()
#buy用户总量
buyCount = data[data.behaviorType=='buy']['userId'].count()

effData = pd.DataFrame([[pvCount,favCount,cartCount,buyCount]],index=['人数'],columns=['点击','收藏','加购物车','购买'])
effData = effData.T

#计算转化率
effData['转化率'] = effData/effData.iloc[0]

# 建立一个柱形图
plt.figure(figsize=(12,4),dpi=80)
#指明x和y值
x = effData.index.tolist()
y = (round(effData['转化率']*100,2)).tolist()
#作图
rects = plt.barh(x[::-1],y[::-1],color="r",height=0.5,align="center",label="转化率")
# 设置标题
plt.title("玲光公司11月25日~12月3日用户行为漏斗")

# 添加数据标签
i = 0
for rect in rects:
    width = rect.get_width()
    plt.text(width+0.2, rect.get_y()+rect.get_height()/2,(str(width)+''+'%'),va='center')

#显示图例
plt.legend()

b88f68f98c9022e985ababba0e1b0f92.png

可以看到,从点击到最后转化为购买行为,转化率仅为2.24%,收藏和加入购物车转化率也很低,分别为3.24%与6.25%。造成这种结果的原因可能是用户花了大量的时间去寻找合适的商品,那么是什么原因导致用户需要花大量时间来寻找商品呢?可以猜测可能的原因:1. 商品分类不明确,商品目录层级不够,不足以让用户快速找到商品,针对这种情况,需要调整电商平台商品目录分层结构,放商品分类更详细;2. 电商平台筛选功能不能满足用户的需求,这种情况就需要优化平台的筛选功能,使用户更容易找到合适的商品。

2)独立访客行为分析

#pv用户总量
pvUser = data[['userId','datestamp']].drop_duplicates().reset_index(drop=True)
pvUserCount = pvUser['userId'].drop_duplicates().count()
#fav用户总量
favUser = data[data.behaviorType=='fav'][['userId','datestamp']].drop_duplicates()
favUserCount = favUser['userId'].drop_duplicates().count()
#cart用户总量
cartUser = data[data.behaviorType=='cart'][['userId','datestamp']].drop_duplicates()
cartUserCount = cartUser['userId'].drop_duplicates().count()
#buy用户总量
buyUser = data[data.behaviorType=='buy'][['userId','datestamp']].drop_duplicates()
buyUserCount = buyUser['userId'].drop_duplicates().count()

effUserData = pd.DataFrame([[pvUserCount,favUserCount,cartUserCount,buyUserCount]],index=['人数'],columns=['点击','收藏','加购物车','购买'])
effUserData = effUserData.T

# 建立一个柱形图
plt.plot(1,1,1)
#指明x和y值
x = effUserData.index.tolist()
y = effUserData['人数']
#作图
plt.bar(x,y,color="r",width=0.5,align="center",label="人数")
# 设置标题
plt.title("玲光公司11月25日~12月3日独立用户行为统计",loc="center")
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha="center",va="bottom",fontsize=12)
    
# 设置x/y轴的名称
plt.xlabel("行为")
plt.ylabel("人数")
# 设置x/y轴的坐标轴范围
plt.ylim(0,60000)
#显示图例
plt.legend()

0e62b91dcd708d6b9303b0223b9421d0.png

从独立用户行为来看,从点击到最后购买,转化率为68%,用户购买意愿很强。

业务指标6:复购率是多少?复购率=一段时间内,消费次数大于等于两次以上的人数/总的用户数

#用户购买次数统计
buyTimes = buyUser.groupby(by=['userId'])['userId'].agg({'购买次数':np.size})
userBuyTimes = buyTimes.groupby(by=['购买次数'])['购买次数'].agg({'人数':np.size}).reset_index()

# 建立一个柱形图
plt.plot(1,1,1)
#指明x和y值
x = userBuyTimes['购买次数']
y = userBuyTimes['人数']
#作图
plt.bar(x,y,color="r",width=0.5,align="center",label="人数")
# 设置标题
plt.title("玲光公司11月25日~12月3日购买次数统计",loc="center")
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha="center",va="bottom",fontsize=12)
    
# 设置x/y轴的名称
plt.xlabel("购买次数")
plt.ylabel("人数")
# 设置x/y轴的坐标轴范围
plt.xlim(0,10)
plt.ylim(0,20000)
plt.xticks(x)
#显示图例
plt.legend()

62a7234c4c8757289cdaba655062acb3.png

复购率为 54.89%

5. 结论

1,2017年11月25日至2017年12月3日期间,12月2日和12月3日访问量和访客数比前面7天明显上升,但每天人均访问数基本一致。访客数增加导致访问量增加。而同时,这两天访客数最多的时候,却基本没有新增用户。所以猜测,12月2日和12月3日,电商平台有做促销活动吸引流量而不是新增渠道增加新客。

2,从用户行为漏斗分析来看,从点击到最后转化为购买行为,转化率仅为2.24%,收藏和加入购物车转化率也很低,分别为3.24%与6.25%,可能是用户花了大量的时间去寻找合适的商品。针对当前情况,改善转化建议:1)整电商平台商品目录分层结构,使商品分类更详细,更明确;2)优化平台的筛选功能,使用户更容易找到合适的商品。从独立访客行为来看,用户购买意愿很强。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值