一、背景及数据

背景:

# 原数据集共有大约1200万条数据,为便于运行随机抽取100万条数据,内容为淘宝APP2014年11月18日至2014年12月18日的用户行为数据,共6列字段,列字段分别是:
    # user_id:用户身份,脱敏
    # item_id:商品ID,脱敏
    # behavior_type:用户行为类型(包含点击、收藏、加购物车、支付四种行为,分别用数字1、2、3、4表示)
    # user_geohash:地理位置
    # item_category:品类ID(商品所属的品类)
    # time:用户行为发生的时间
# 提出问题
    # 不同时间维度下用户活跃度如何变化?
    # 用户的留存情况如何(复购率及漏斗流失情况)?

#用户价值情况?

数据来源:和鲸社区用户上传,一并参考"和鲸训练营-数分基础"

软件使用:主要使用Spyder(Python3.9) ,辅助使用MySQL、Tableau

二、分析过程及结果

1.导入数据即数据清洗准备工作

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfile_path=r'D:\练习大数据集\和鲸\taobao_user_bahavior.csv'
plt.rcParams['font.sans-serif']=['Microsoft YaHei'] #显示中文
plt.rcParams['axes.unicode_minus']=False #显示负数behavior_data=pd.read_csv(file_path)  #读取数据pd.set_option('display.max_columns', None)  #显示完全#查看首行及相关信息
behavior_data.head(1)
behavior_data.info()

user_geohash地理位置字段有大量缺失

#查看缺失情况-直接分字段求合计
behavior_data.isnull().sum()
#剔除大量缺失的地理位置列
behavior_data.drop('user_geohash',axis=1,inplace=True)

此外基于原表中的time字段属性为精确到小时的object字符串,对其进行格式转换并拆分便于下一步分析

#拆分日期时间便于分析
behavior_data['time']=pd.to_datetime(behavior_data['time'])#原数据首先转换为datetime格式#拆分出年月日并将其由object转化为datetime格式
behavior_data['date']=behavior_data['time'].dt.date
behavior_data['date']=pd.to_datetime(behavior_data['date']) #没有这一步则单独取12.12数据匹配不上,数据格式不匹配
#拆分出小时
behavior_data['hour']=behavior_data['time'].dt.hour

鉴于原表用数字1 2 3 4分别代替用户点击、收藏、加购、购买行为,为便于分析,将其转为文字显示

#将用户行为类型的数字编码转化为文字方便使用
behavior_type_transform=['click','collect','cart','buy']
behavior_data["behavior_type"]=behavior_data["behavior_type"].map(lambda s: behavior_type_transform[s-1])
#数据预处理清洗完毕后查看基本信息
behavior_data.head(1)
behavior_data.info()

2.流量维度分析

2.1总流量情况概览

#总访问pv(访问多少次)pv_gross=behavior_data['user_id'].count()
#总访问uv(访问多少人)uv_gross=behavior_data['user_id'].nunique()
#人均访问量PV/UVpv_uv_gross=pv_gross/uv_gross
#日均访问量visit_daily=pv_gross / behavior_data['date'].nunique()
#用户行为数据
behavior_gross_num1=behavior_data['behavior_type'].value_counts().sort_values(ascending=False)# behavior_gross=behavior_data.groupby(by='behavior_type')['user_id'].count().sort_values(ascending=False)# 以上两种方法结果一样count()与value_counts()
#用户行为数量behavior_gross_num2=behavior_data.groupby(by='behavior_type')['user_id'].nunique().sort_values(ascending=False)#购买用户数量量buy_num=behavior_data[behavior_data['behavior_type']=='buy']['user_id'].nunique()
#人均购买次数:购买次数/人数round(behavior_data[behavior_data['behavior_type']=='buy']['user_id'].count() /     behavior_gross_num2['click'],3)
#购买用户人均购买次数round(behavior_data[behavior_data['behavior_type']=='buy']['user_id'].count() / behavior_gross_num2['buy'],3)
#购买率round(behavior_gross_num2['buy']/behavior_gross_num2['click'],3)
#复购率
#先求每个用户购买次数,再求大于2的用户数/总用户数buy_times=behavior_data[behavior_data['behavior_type']=='buy'].groupby('user_id')['behavior_type'].count().reset_index()round(buy_times[buy_times['behavior_type']>=2]['user_id'].count()/buy_times['user_id'].count(),3)

2.1.1数据汇总结果如下:

访问总量(PV):100000

访问总量(UV):9918

人均访问量(PV/UV):100.8267795926598

日均访问量:32258.064516129034

用户行为(总量):

behavior_type
click               942366
cart                28098
collect            19772
buy                 9764

用户行为(人次):

behavior_type   
click                9911
cart                 5735
buy                 4607
collect             3634

购买用户数量:4607

人均购买次数(购买次数/总人数):0.985

购买用户人均购买次数(购买次数/购买人数):2.119

购买率(购买用户人数/总用户人数):0.465

复购率(购买两次及两次以上的用户人数/购买用户人数):0.493

2.1.2结论

①自2014.11.18—2014.12.18,网站总访问量100万次,总访客数9918人,人均访问量101次,日均访问量约3万次

②在用户行为数据中,其中商品详情页点击次数约94万次,加购次数约2万8千次,收藏次数约2万次,购买次数约1万次

③具体到购买数据中,购买用量为4607人,人均购买次数约为1次/人,购买用户人均购买次数约为2次/人,购买率约46%(有46%的人在使用APP后会选在进行购买),复购率约49%(有49%的人在首次购买后仍会选择使用该APP进行二次及以上复购)

④这一个月中用户购买率及复购率都接近50%,表明基于总用户,25%的用户会在该APP发生至少两次购买行为,但上述相关总量指标还是应进行同比环比后再判断其质量,选择对比对象时应注意此期间包含12.12日促销活动。若同比往年或同行业相对较低或未达到预期,则结合指标拆解即维度一并查找原因

2.2日流量情况分析

2.2.1日流量计算及绘图

#日访问量pv(访问多少次)pv_daily=behavior_data.groupby(by='date')['user_id'].count()
#日访问量uv(访问多少人)uv_daily=behavior_data.groupby(by='date')['user_id'].nunique()
#人均访问量:PV/UV 也叫访问深度pv_uv_daily=pv_daily / uv_daily
#日点击情况click_daily=behavior_data[behavior_data['behavior_type']=='click'].groupby(by='date')['user_id'].count()
#日收藏情况         collect_daily=behavior_data[behavior_data['behavior_type']=='collect'].groupby(by='date')['user_id'].count()
#日加购物车情况cart_daily=behavior_data[behavior_data['behavior_type']=='cart'].groupby(by='date')['user_id'].count()
#日支付情况buy_daily=behavior_data[behavior_data['behavior_type']=='buy'].groupby(by='date')['user_id'].count()#将日情况综合成一个DataFrame并修改列名
daily_data=pd.concat((pv_daily,uv_daily,pv_uv_daily,click_daily,collect_daily,cart_daily,buy_daily),axis=1)
daily_data.columns = ['pv_daily','uv_daily','pv_uv_daily','click_daily','collect_daily','cart_daily','buy_daily']
#绘制活跃情况图
plt.subplot(311)
plt.plot(daily_data.index,daily_data['pv_daily'])
plt.title('日访问量pv')
plt.subplot(312)
plt.plot(daily_data.index,daily_data['uv_daily'])
plt.title('日访问量uv')
plt.subplot(313)
plt.plot(daily_data.index,daily_data['pv_uv_daily'])
plt.title('人均访问量pv/uv')
plt.show()

日活跃情况走势图

由上图可发现在2014.12.12前走势基本平稳,12.12当天出现明显峰值,后迅速下降至日常水平

#绘制用户行为日均走势图
plt.figure(figsize=(18,10),dpi=80)
plt.subplot(411)
plt.plot(daily_data.index,daily_data['click_daily'])
plt.title('日点击量')
plt.subplot(412)
plt.plot(daily_data.index,daily_data['collect_daily'])
plt.title('日收藏量')
plt.subplot(413)
plt.plot(daily_data.index,daily_data['cart_daily'])
plt.title('日加购物车量')
plt.subplot(414)
plt.plot(daily_data.index,daily_data['buy_daily'])
plt.title('日购买量')
plt.show()

日用户行为走势图

 2.2.2结论及分析

①从日活跃情况及用户行为变动可看出,点击、收藏、加购等行为在12.12日前3-4天已逐渐呈现稳步上升趋势,购买指标在12.12当天呈跳跃式增长,符合下单习惯。

②各指标在双12前几天即呈现上升趋势,表明此时活动效果已经初步显露,人们的消费欲望提高,一方面,在这三四天里可以考虑增加活动优惠的推送消息,进一步刺激消费欲望;另一方面,可以在双12前通过预订商品或者直接提前锁定商品价格方式,提前释放用户的购买需求,以减少活动时间延长所带来消费欲望可能减退的不确定性影响。

2.3时流量分析

2.3.1整体时流量计算及绘图

指标计算

#整体时均访问
pv_data_hour=behavior_data.groupby(by='hour')['user_id'].count()
uv_data_hour=behavior_data.groupby(by='hour')['user_id'].nunique()
pv_uv_data_hour=pv_data_hour / uv_data_hour#整体时均点击、收藏、加购、购买
click_data_hour=behavior_data[behavior_data['behavior_type']=='click'].groupby(by='hour')['user_id'].count()
collect_data_hour=behavior_data[behavior_data['behavior_type']=='collect'].groupby(by='hour')['user_id'].count()
cart_data_hour=behavior_data[behavior_data['behavior_type']=='cart'].groupby(by='hour')['user_id'].count()
buy_data_hour=behavior_data[behavior_data['behavior_type']=='buy'].groupby(by='hour')['user_id'].count()#整体时均总合成一个df
data_hour=pd.concat((pv_data_hour,uv_data_hour,pv_uv_data_hour,click_data_hour,collect_data_hour,cart_data_hour,buy_data_hour),axis=1)
data_hour.columns=['pv_data_hour','uv_data_hour','pv_uv_data_hour','click_data_hour','collect_data_hour','cart_data_hour','buy_data_hour']

绘制小时访问趋势图

#整体小时pv uv 人均访问
plt.subplot(311)
plt.title('总体小时访问量pv')
plt.plot(data_hour.index,data_hour['pv_data_hour'])
plt.subplot(312)
plt.title('总体小时访问量uv')
plt.plot(data_hour.index,data_hour['uv_data_hour'])
plt.subplot(313)
plt.title('总体小时人均访问量pv/uv')
plt.plot(data_hour.index,data_hour['pv_uv_data_hour'])
plt.show()

小时流量情况走势图

数据期内,访问量通常在每天18-20点左右逐步上升,对应一般下班时间,大概21-22点左右达到顶峰,后逐渐下降至次日凌晨4-5点达到低点(约18点左右开始UV相对上升幅度不大,而PV上升幅度较为明显,可能表明用户集中高密度使用APP)

绘制小时用户行为趋势图

#整体小时用户行为
plt.subplot(411)
plt.plot(data_hour.index,data_hour['click_data_hour'])
plt.title('总体小时点击量')
plt.subplot(412)
plt.plot(data_hour.index,data_hour['collect_data_hour'])
plt.title('总体小时收藏量')
plt.subplot(413)
plt.plot(data_hour.index,data_hour['cart_data_hour'])
plt.title('总体小时加购物车量')
plt.subplot(414)
plt.plot(data_hour.index,data_hour['buy_data_hour'])
plt.title('总体小时购买量')
plt.show()

小时用户行为趋势图

购买量在17-18达到低值,随后与各项指标一起呈上升趋势,也基本符合整体日流量趋势

2.3.2结论

① 从小时流量及小时用户行为走势情况来看,用户多习惯于在每天18点-22点范围内集中频繁使用APP,此时间段为用户高度活跃期(可能因为下班休闲、主播带货等)

②根据这一特征,在此时间段可以集中推送与用户相关度较高的商品(向高转化率、高销量优质商品倾斜)及优惠活动。从推广角度看,此时间段的流量推广应适当提价;23时-4时是用户行为活动的低谷期,在此期间应减少高成本的流量推广活动,在推送消息次数有限的前提下减少此时段的消息推送。

3.用户维度分析

3.1用户转化率情况

3.1.1转化率计算与绘图

#查看不同用户行为的总量并统一到一个df中
user_behavior=behavior_data['behavior_type'].value_counts().reset_index()#计算某列中不同值的个数(感觉类似于按具体字段内容groupby后count,毕竟groupby只能按字段名,而非具体内容)
user_behavior.columns=['用户行为','访问量']
#计算各个环节转化率
temp1 = user_behavior['访问量'][1:].values
temp2 = user_behavior['访问量'][0:-1].values#类似列表左侧(上方)从0开始,右侧(下方)从-1开始,此处左闭右开代表从第一个到倒数第二个
p = np.around(temp1 / temp2,decimals=4)*100 #np的around方法保留几位小数(np数组,小数位数)
p = list(p) #转化为列表,或者上一步直接用tolist()方法
p.insert(0,100) #打头插入100%user_behavior['单一环节转化率%']=p
# user_behavior.drop('单一环节转化率',axis=1,inplace=True)
user_behavior['整体转化率%']=round(user_behavior['访问量'] / user_behavior.loc[0,'访问量'],4) *100
user_behavior['单一环节流失率%']=100-user_behavior['单一环节转化率%']收藏-购买、加购-购买转化率
click_collect=np.around(user_behavior[user_behavior['用户行为']=='buy']['访问量'].values / user_behavior[user_behavior['用户行为']=='collect']['访问量'].values,decimals=4)*100
click_cart=np.around(user_behavior[user_behavior['用户行为']=='buy']['访问量'].values / user_behavior[user_behavior['用户行为']=='cart']['访问量'].values,decimals=4)*100绘制条形图
plt.title('不同环节转化率%')
p1=plt.bar('收藏/点击',user_behavior[user_behavior['用户行为']=='collect']['整体转化率%'])
plt.bar_label(p1,label_type='edge')
p2=plt.bar('加购/点击',user_behavior[user_behavior['用户行为']=='cart']['整体转化率%'])
plt.bar_label(p2,label_type='edge')
p3=plt.bar('购买/点击',user_behavior[user_behavior['用户行为']=='buy']['整体转化率%'])
plt.bar_label(p3,label_type='edge')
p4=plt.bar('购买/收藏',click_collect)
plt.bar_label(p4,label_type='edge')
p5=plt.bar('购买/收藏',click_cart)
plt.bar_label(p4,label_type='edge')
plt.show()

从前三列个柱形图来看,点击后的转化率还需进一步进行环比同比对比才能确定高低,如果出于较低水准,则可能要考虑推送机制(推送的商品是否符合用户浏览倾向、质量如何、定价如何等)

从后两列柱形图来看,虽然从数字上收藏行为与加购行为对购买的转化率较高,但由于没有一一对应所购买的商品是否有收藏、加购行为,无法得出收藏加购后购买的可能性提高的结论。主要因为用户路径可能存在多种可能,点击、收藏与加购并非顺序固定的流程,故也不便使用漏斗图,无法通过单环节的流量比率来判断各环节的转化率。

3.2用户路径分析

3.2.1用户路径计算

针对用户路径多样的情况,对所有购买商品探究其潜在路径,结合判断用户转化与流失


#-—————用户购买路径偏好分析——————
#购买的用户集合(有多少个用户购买过,如果不加set会是array类型,加set便于转化为dataframe,为啥非得是Set,用list试了下很慢很慢)
buy_route_set=set(behavior_data[behavior_data['behavior_type']=='buy']['user_id'].unique())#取出所有购买记录按时间排序后再按用户、商品id分组,便于下一步对每件售出商品探究路径
buy_route_data=behavior_data[behavior_data['user_id'].map(lambda a: a in buy_route_set )].sort_values(by='date').groupby(['user_id',"item_id","item_category"],as_index=False)
#上面这一套有点类似于SQL先取出符合条件的id,再子查询嵌套select x where id in(xxx)得出这些id的所有记录#同一用户对同一件商品若购买多件,则按照最后一件的购买时间作为购买时间的标志
#直接购买用户数
buy_route_data_num1=buy_route_data.filter(lambda x: set(x[x['date']<=x[x['behavior_type']=='buy']['date'].max()]['behavior_type'])=={'buy'})['user_id'].nunique()
#思路在于在按用户、商品group后,首先保证buy的日期最晚,随后取出在该日期前的用户行为,细化到用户行为只有'buy'的,对userid去重计数
print('直接购买用户数量',buy_route_data_num1)
buy_route_data_num2=buy_route_data.filter(lambda x: set(x[x['date']<=x[x['behavior_type']=='buy']['date'].max()]['behavior_type'])=={'click','buy'})['user_id'].nunique()
#思路在于在按用户、商品group后,首先保证buy的日期最晚,随后取出在该日期前的用户行为,细化到用户行为只有'click'与'buy'的,即该商品在购买(buy)之前只经历了click的行为,即由click转化到buy,对userid去重计数
print('点击-购买用户数量',buy_route_data_num2)
buy_route_data_num3=buy_route_data.filter(lambda x: set(x[x['date']<=x[x['behavior_type']=='buy']['date'].max()]['behavior_type'])=={'click','collect','buy'})['user_id'].nunique()
print('点击-收藏-购买用户数量',buy_route_data_num3)
buy_route_data_num4=buy_route_data.filter(lambda x: set(x[x['date']<=x[x['behavior_type']=='buy']['date'].max()]['behavior_type'])=={'click','cart','buy'})['user_id'].nunique()
print('点击-加购-购买用户数量',buy_route_data_num4)
buy_route_data_num5=buy_route_data.filter(lambda x: set(x[x['date']<=x[x['behavior_type']=='buy']['date'].max()]['behavior_type'])=={'click','collect','cart','buy'})['user_id'].nunique()
print('点击-收藏-加购-购买用户数量',buy_route_data_num5)

直接购买用户数量 3322
点击-购买用户数量 2393
点击-收藏-购买用户数量 45

点击-加购-购买用户数量 262
点击-收藏-加购-购买用户数量 3

(PS:运行时间花了好久)

直接购买、点击-购买是比较主要的路径,收藏、加购后购买相对较少

3.2.2 结论  

①点击后的转化率相对较低,需要与业内其他平台的相关指标进行对比,如果处于较低水平,可以考虑推送机制是否精准、推送的商品质量是否有待提高、定价相对同行是否过高、详情页是否需要优化、售前服务质量是否有待提高等维度来定位问题所在

②结合上文收藏、点击数据可见,虽然收藏、加购的用户量不低,但真正转化为购买的用户量占比较少。收藏的转化相对更低,是否可以考虑对收藏一段时间但尚未下单的商品设置推送提醒,或者对用户收藏、加购的商品品类发放优惠券、推送促销活动,也可推送与收藏加购商品同类别但更畅销、更优质的商品以提升销量。

3.3用户留存

3.3.1用户留存指标计算

这一块感觉看别人用的Python代码略复杂,改用MySQL实现计算,Tableau接入绘图

select
register_time,
count(distinct a.user_id) as new_user_daily,
count(distinct case when DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)=1 then a.user_id else null end) / count(distinct a.user_id) as retain1,
count(distinct case when DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)=3 then a.user_id else null end) / count(distinct a.user_id) as retain3,
count(distinct case when DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)=7 then a.user_id else null end) / count(distinct a.user_id) as retain7,
count(distinct case when DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)=14 then a.user_id else null end) / count(distinct a.user_id) as retain14,
count(distinct case when DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)=30 then a.user_id else null end) / count(distinct a.user_id) as retain30
from
(SELECT
user_id,
min(DATE_FORMAT(time,'%Y-%m-%d')) as register_time
from
taobao_user_bahavior
group by
user_id
) a left join taobao_user_bahavior b on a.user_id=b.user_id and DATEDIFF(DATE_FORMAT(time,'%Y-%m-%d'),register_time)>0
group by register_time
-- 假设11.18用户为首日新增

(如果按照自身与自身连接应该可以算出活跃用户的留存,但是可能电脑性能不太行,SQL没跑出来,显示磁盘空间不足)

从上至下分别为次日、3、7、14、30留存情况,最下一行为日新增用户

 3.3.2结论

前期整体来看留存率随时间推移较为平稳,也有部分日期呈现出相对较大的涨跌,平均来看retain1次日留存约为0.39,短期留存还有较大提升空间,或可考虑通过分发推送提醒等方式提升。

3.4用户RFM

3.4.1RFM分类

由于该数据集缺乏金额数据,故此处仅从R(最近一次购买时间)、F(购买频率)两个维度进行拆分。

# R:最近一次交易时间间隔,F:频率,此处定义为这一个月里的消费品率
date_max=behavior_data['date'].max()
data_RFM=pd.DataFrame()
data_RFM['R']=(date_max-behavior_data[behavior_data['behavior_type']=='buy'].groupby('user_id')['date'].max()).map(lambda a: a.days)
#date_max选择数组中的最晚日期,减去有购买行为用户的最晚消费日期,取天数
data_RFM['F']=behavior_data[behavior_data['behavior_type']=='buy'].groupby('user_id')['date'].count()
data_RFM.describe() #描述性统计为打分做依据def r_score(x):if x<=2:return 5if x>=3 and x<=5:return 4if x>=6 and x<=8:return 3if x>=9 and x<=17:return 2if x>=18:return 1
def f_score(x):if x==1:return 1if x==2:return 2if x==3:return 3if x==4:return 4if x>=5:return 5#为R与F赋值,具体分档赋值应结合业务与经验
data_RFM['R_SCORE']=data_RFM['R'].map(r_score)
data_RFM['F_SCORE']=data_RFM['F'].map(f_score)#根据评分均值区分True or False 便于最后拆分归类维度
data_RFM['R>R_MEAN']=data_RFM['R_SCORE']>data_RFM['R_SCORE'].mean()
data_RFM['F>F_MEAN']=data_RFM['F_SCORE']>data_RFM['F_SCORE'].mean()def user_classification(x):r,f=xif r==True and f==True:return '重要价值用户'elif r==True and f==False:return '重要发展用户'elif r==False and f==True:return '重要保持客户'elif r==False and f==False:return '重要挽留客户'else:return Nonedata_RFM['user_classification']=data_RFM[['R>R_MEAN','F>F_MEAN']].apply(user_classification,axis=1)
RFM_user=data_RFM['user_classification'].value_counts()#各个层次用户分别合计
RFM_user / RFM_user.sum() *100 #各个层次用户占比

重要价值用户    31.73%
重要挽留客户    31.26%
重要发展用户    19.47%
重要保持客户    17.54%

3.4.2结论

①重要价值用户:主要提升该部分用户的满意度,服务升级,发放专属特别优惠,推送推广时也应当注意频率和方式,提升用户体验。
  ②重要发展用户:最近消费时间间隔小,但消费频率不高,需要提高其消费频率,可在每次购买商品收货后提供限时代金券、限时优惠券等,提升下一步的消费欲望。
  ③重要保持用户:交易频繁但最近无交易,可以向该类用户增加活动优惠、相关商品的推送频率等,唤回该部分用户。
  ④重要挽留用户:最近消费时间间隔大,且消费频率低,这类用户即将流失,发放调查问卷调查用户体验找出问题原因,想办法挽留客户,若是价格原因则推送优惠券,若是推送不准确则改进推送机制。

4.商品维度分析

根据二八法则判断重点销售的商品品类及单个商品(数据集缺乏销售数据,只能统计下销量,若搭配销售二八法则可能更好)

#求每个品类销售数量二八区分
item_category=behavior_data[behavior_data['behavior_type']=='buy'].groupby('item_category')['user_id'].count().sort_values(ascending=False).reset_index()
item_category.rename(columns={'user_id':'item_category_count'},inplace=True) #改名
item_category['累积销售数量']=item_category['item_category_count'].cumsum() #求累计
total_count=item_category['累积销售数量'].max() #累计一共是多少
item_category['累计占比']=item_category['累积销售数量']/total_count #求占比#求单个商品销售数量二八区分
item=behavior_data[behavior_data['behavior_type']=='buy'].groupby('item_id')['user_id'].count().sort_values(ascending=False).reset_index()
item.rename(columns={'user_id':'item_id_count'},inplace=True) #改名
item['累积销售数量']=item['item_id_count'].cumsum() #求累计
total_id_count=item['累积销售数量'].max() #累计一共是多少
item['累计占比']=item['累积销售数量']/total_id_count #求占比#绘制占比图
plt.subplot(121)
plt.title('商品品类销量占比')
plt.ylabel('累计比率')
plt.plot(item_category['累计占比'])
plt.grid()plt.subplot(122)
plt.title('单个商品销量占比')
plt.ylabel('累计比率')
plt.plot(item['累计占比'])
plt.grid()
plt.show()

前600个品类贡献了近80%的销量(占比约30%),前7500个品类贡献了近80% ,后者分布过于零散可能如果有金额数据更好,整体来看运营活动针对这30%的商品品类应当分配更多的资源,以期获得显著的销量提升效果。

5.总结

1.基本情况

自2014.11.18—2014.12.18,网站总访问量100万次,总访客数9918人,人均访问量101次,日均访问量约3万次;在用户行为数据中,其中商品详情页点击次数约94万次,加购次数约2万8千次,收藏次数约2万次,购买次数约1万次;具体到购买数据中,购买用量为4607人,人均购买次数约为1次/人,购买用户人均购买次数约为2次/人,购买率约46%(有46%的人在使用APP后会选在进行购买),复购率约49%(有49%的人在首次购买后仍会选择使用该APP进行二次及以上复购)这一个月中用户购买率及复购率都接近50%

2.流量维度

用户的活跃时间基本规律得集中于18-22点,用户访问量、各项行为指标明显上升,故而可在此期间多进行推送、促销等活动

3.用户维度

①点击后的转化率还需进一步进行环比同比对比才能确定高低,如果出于较低水准,则可能要考虑推送机制(推送的商品是否符合用户浏览倾向、质量如何、定价如何等)

②直接购买、点击-购买是比较主要的路径,收藏、加购后购买相对较少;收藏的转化相对更低,是否可以考虑对收藏一段时间但尚未下单的商品设置推送提醒,或者对用户收藏、加购的商品品类发放优惠券、推送促销活动,也可推送与收藏加购商品同类别但更畅销、更优质的商品以提升销量。

③整体来看留存率随时间推移较为平稳,也有部分日期呈现出相对较大的涨跌,可判断是否触及警戒需要排查原因等;平均来看retain1次日留存约为0.39,短期留存还有较大提升空间,或可考虑通过分发推送提醒等方式提升。

④根据RFM进行用户分类,针对不同价值用户采取不同策略,将用户向重要价值用户方向提升,减少挽留用户

4.商品维度

根据二八法则敲定重点商品与品类加大资源倾斜

数分练习-淘宝用户行为相关推荐

  1. python开发跟淘宝有关联微_使用Python分析淘宝用户行为

    一.项目背景 本数据分析报告以手机淘宝app订单数据作为数据集,通过行业常见指标对淘宝用户行为数据进行分析,并给出优化建议.本数据集包含了2014年11月18日至2014年12月18日之间,约八十万随 ...

  2. 用Python对淘宝用户行为数据的分析

    目录 项目前言 一.分析目的 二.数据获取与理解 1.数据来源 2.理解数据 三.具体做法 1.导入并清洗数据 3.1.1.把时间戳改为datetime类型 3.1.2.查看是否存在重复的行数据 3. ...

  3. 案例:淘宝用户行为数据分析(SQL实现)

    一.项目介绍 本文针对淘宝APP的运营数据,使用阿里云天池上公开的数据集,以行业常见指标对用户行为进行分析,主要工具为MySQL,涉及分组汇总,引用变量,视图,关联查询等内容,可视化工具为excel和 ...

  4. 天池-淘宝用户行为数据分析(python+Tableau)

    天池-淘宝用户行为数据分析(python+Tableau) 一.背景 ​ 用户行为分析可以让产品更加详细.清楚地了解用户的行为习惯,从而找出网站.app.推广渠道等产品存在的问题,有助于产品发掘高转化 ...

  5. 使用Python对淘宝用户行为进行数据分析

    淘宝用户数据分析 1 分析背景与意义 2 分析思路 3 分析内容 3.1 提出问题 3.2 理解数据 3.3 数据清洗 3.3.1 数据导入 3.3.2 缺失值分析 3.3.3 选取时间范围 3.3. ...

  6. 【入门数据分析】淘宝用户行为分析

    前言 分析目的:本文基于淘宝1年的交易数据对其用户行为进行多角度分析,对相关问题进行解释并提供建议. 分析工具:MySQL.excel 主要模型:AARRR模型 一.分析问题和思路 本文采用淘宝电商的 ...

  7. 淘宝用户行为统计分析-python

    淘宝用户行为统计分析-Python 一 分析背景 二 分析目的 三 分析思路 四 数据处理 4.1 数据导入 4.2 数据清洗 4.3 数据转换 五 统计分析 5.1 用户习惯 5.2 销售规律 5. ...

  8. 数据分析项目实战1——淘宝用户购买行为分析(天池)

    一.分析背景.数据来源.数据解释 https://tianchi.aliyun.com/dataset/649 由于userbehavior数据集的数据量较大,本次分析使用Navicat将前10万条数 ...

  9. 淘宝用户购物行为分析

    目录 一.项目介绍 1.1 数据集 1.2 分析思路 二.数据预处理 2.1 数据抽样.导入数据 2.2 数据清洗 2.3 导出数据 三.数据分析 3.1 从网站维度分析用户行为 3.1.1 UV.P ...

最新文章

  1. 你想见的大神都来AI ProCon 2019了,优惠票限时抢购开启!
  2. 查询慢 跑批慢 性能低怎么办? | 润乾高性能计算专家
  3. IdentityServer4 使用OpenID Connect添加用户身份验证
  4. 在python中查看关键字需要在python解释器中执行_现有代码 d={},在Python3解释器中执行 d[([1,2])] = 'b'得到的结果为( )。...
  5. 【Scratch】青少年蓝桥杯_每日一题_3.17_蹦床
  6. VTK:几何对象之OpenVRCube
  7. mysql主键用完了怎么办_MySQL 自增 ID 用完了怎么办?
  8. python深入和扩展_加速方案 — Python扩展模块
  9. Atitit。如何实现dip, di ,ioc  ,Service Locator的区别于联系
  10. 1000个脑筋急转弯
  11. 20篇聊天机器人领域必读论文速递!
  12. win10 卸载mysql5.7
  13. 协同过滤算法及python实现
  14. iOS通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完
  15. oracle常见单词_oracle认证考试中,常用单词汇总
  16. unity学习之路—飞机大战
  17. 从零开始学习信号完整性--7-SI分析仿真
  18. vue+element ui 项目 后台管理系统
  19. iview导出使用了前端分页的所有表格数据
  20. win7打不开chm格式文件

热门文章

  1. Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
  2. 腾讯地图 多个异步script互相依赖加载问题
  3. eigrp 扩散算法_EIGRP之DUAL(扩散更新算法)
  4. 【折腾电脑】win笔记本雷电3外接显卡过程记录(使用内屏)、雷电三驱动怎么更新
  5. 记录:为啥没有雷电4接口的显卡扩展坞与移动硬盘?
  6. python去除含st的股票
  7. (转)牛顿和哈雷的故事(重点看一下牛顿老时候)
  8. 怎样申请微信公众平台接口测试帐号
  9. dismiss ios pop效果_iOS ~ ViewController的Push,Pop和Present,Dismiss转场动画
  10. Real-Time Rendering 第五章 光照模型