电商用户行为分析案例--天池数据集User Behavior Data from Taobao

用户行为分析过程

说明

本次数据分析基于阿里云天池数据集(用户行为数据集),使用转化漏斗,对常见电商分析指标,包括转化率,PV,UV,复购率等进行分析,分析过程中使用Python进行数据的清洗,清洗后的数据导入MySQL数据库,运用MySQL进行数据提取,使用Excel进行数据可视化。

另写了一篇博文,是基于本文入库的数据。在Python环境下,连接MySQL进行取数,并用pyecharts做了一个简单的可视化仪表板。有兴趣的小伙伴,看完本篇博文后,可以移步到:
电商用户行为分析案例–天池数据集User Behavior Data from Taobao(python环境MySQL操作+Pyecharts可视化)

一、数据集

在这里插入图片描述
该数据集记录用户在淘宝网站浏览商品产生的行为数据。

二、提出问题

1、整体用户的购物情况
PV(总访问量)、日均访问量、UV(用户总数)、有购买行为的用户数量、用户的购物情况、复购率分别是多少?

2、用户行为转化漏斗
点击-加购物车-收藏-购买各环节转化率如何?购物车遗弃率是多少,如何提高?

3、购买率高和购买率为0的人群有什么特征?

4、基于RFM模型的用户分析

5、商品销售的一些情况

三、数据清洗

数据清洗用Python的pandas处理,效率会高很多。

#导入相关包
import numpy as np
import pandas as pd
import time

#导入原始数据
data=pd.read_csv(r'E:\date\aliyun_taobao\UserBehavior.csv',header=None,index_col=None)

#更新列名
columns=['User_Id','Item_Id','Category_Id','Behavior_type','Timestamp']
data.columns=columns

#观察数据集情况
data.head()

#查询缺失值情况
data.isnull().sum()

#时间戳列有1个缺失值,查看缺失值列
data[data.iloc[:,4].isnull()]

#时间戳缺失值列,用户行为为'P',这个数据也是异常。查看数据集中用户行为种类
data.iloc[:,3].unique()

#用户行为每个种类有多少数据
data.iloc[:,3].value_counts()

#缺失值只有1列,直接删除。并重置索引
data.dropna(axis=0,inplace=True)
data.reset_index(drop=True,inplace=True)

#时间戳列转换为日期、时间数据。并把日期和时间分为两列
data.loc[:,'Timestamp']=data['Timestamp'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x)))
data.loc[:,'Date']=data['Timestamp'].apply(lambda x:x.split(' ')[0])
data.loc[:,'Time']=data['Timestamp'].apply(lambda x:x.split(' ')[1])

#把时间戳列删除
data=data.drop(columns='Timestamp',axis=1)

#原始数据日期区间为2017-11-25到2017-12-03,这个时间区间外认为是异常数据。查看一下具体情况
data[data['Date']<'2017-11-25'].shape

data[data['Date']<'2017-11-25']['Date'].value_counts()

data[data['Date']>'2017-12-03'].shape

data[data['Date']>'2017-12-03']

#时间区间外的日期数据剔除
data=data[(data['Date']>='2017-11-25')&(data['Date']<='2017-12-03')]

#查看重复数据
data[data.duplicated()]
#删除重复数据
data.drop_duplicates(inplace=True)
#充值索引
data.reset_index(drop=True,inplace=True)
#数据清洗完成,导出到本地
data.to_csv(r'E:\date\aliyun_taobao\UserBehavior_Done.csv',index=False)

至此,数据清洗完成,把清洗后的数据导入MySQL数据库。

四、数据导入MySQL

-- 建立数据库
create database test;
-- 建立表格
user test;
-- 创建表格
create table user (
	user_id int not null,
	item_id int not null,
	category_id int not null,
	behavetype varchar(10) not null,
	dates date not null,
	times time not null);

-- 导入数据
load data local infile 'E:/date/aliyun_taobao/UserBehavior_Done.csv'
into table user 
fields terminated by ','
ignore 1 lines;

-- 提取小时数据
ALTER TABLE user ADD hours char(10) NULL;

UPDATE user
set hours =left(times,2);

五、构建模型和分析问题

1、用户流量及购物情况

(1) pv(总访问量)
-- pv (总访问量):3431905
select count(behavetype) as 总访问量
from user 
where behavetype = 'pv';
(2) 日均访问量
-- 日均访问量
select dates,count(behavetype) as 日均访问量
from user 
where behavetype = 'pv'
group by dates
order by dates;

在这里插入图片描述

(3) uv(用户总数)
-- 用户总数:37376
select count(distinct user_id) as 用户总数
from user;
(4) 有购买行为的用户数量
-- 有购买行为的用户数量:25400
select count(distinct user_id) as 购买用户数
from user 
where behavetype = 'buy';
(5) 用户的购物情况
-- 用户的购物情况
create view user_behave AS
select user_id,count(behavetype),
sum(case when behavetype = 'pv' THEN 1 ELSE 0 end) as 点击次数,
sum(case when behavetype = 'fav' THEN 1 ELSE 0 end) as 收藏次数,
sum(case when behavetype = 'cart' THEN 1 ELSE 0 end) as 加购数,
sum(case when behavetype = 'buy' THEN 1 ELSE 0 end) as 购买数
from user 
group by user_id 
order by count(behavetype) DESC;
-- 查看用户购物情况
select * from user_behave;

部分结果显示:
在这里插入图片描述

(6) 复购率:产生两次或两次以上购买的用户占购买用户的比例
SELECT
sum(case WHEN 购买数 > 1 THEN 1 ELSE 0 end) as 购买数大于1,
sum(case when 购买数 > 0 Then 1 ELSE 0 end) as 总购买数,
concat(round(sum(case WHEN 购买数 > 1 THEN 1 ELSE 0 end)/sum(case when 购买数 > 0 Then 1 ELSE 0 end)*100,2),'%') as 复购率
from user_behave;

在这里插入图片描述

2、用户行为转化漏斗

在购物环节中收藏和加入购物车两个环节没有先后之分,所以将这两个环节放在一起作为购物环节的一步。最终得到用户购物行为各环节转化率,如下:

-- 用户购物行为统计
select 
sum(点击次数) as 点击次数,
sum(收藏次数) as 收藏次数,
sum(加购数) as 加购数,
sum(购买数) as 购买数
from user_behave;

在这里插入图片描述

-- 用户购买行为转化率
SELECT
concat(round(sum(点击次数)/sum(点击次数)*100,2),'%') as pv,
concat(round((sum(收藏次数)+sum(加购数))/sum(点击次数)*100,2),'%') as pv_to_favCart,
concat(round(sum(购买数)/sum(点击次数)*100,2),'%') as pv_to_buy
from user_behave;

在这里插入图片描述
在这里插入图片描述
这个转化率需要跟行业或者竞争对手的数据进行对比分析,也可以根据自己店铺的历史数据,或者不同商品进行对比,当出现异常时,回溯流程进而发现问题。

3、购买率高和购买率低的人群有什么特征

购买率高用户特征:

-- 购买率高人群特征(按购买率倒叙排列)
select user_id,点击次数,收藏次数,加购数,购买数,
round(购买数/点击次数*100,2) as 购买率
from user_behave
group by user_id
order by 购买率 DESC;

在这里插入图片描述

-- 购买率高人群特征(按购买数倒叙排列)
select user_id,点击次数,收藏次数,加购数,购买数,
concat(round(购买数/点击次数*100,2),'%') as 购买率
from user_behave
group by user_id
order by 购买数 DESC;

在这里插入图片描述
由以上结果可以看出,购买率有很多大于100%的情况,这部分猜测是因为数据取值区间的问题。一些用户之前已经把商品加入购物车,然后直接付款买了,所以没产生点击。
不过实际情况如果属于异常数据,在数据清洗的时候,也可以把这些数据剔除再进行分析。

不过从上面数据也大致能看到,购买率高的用户点击率反而不怎么高,这些用户收藏数和加购物车的次数也很少,这部分用户应该属于理智型消费者,有明确的购物目标,属于缺啥买啥型,不容易被店家广告或促销吸引。

购买数低的用户特征:

-- 购买数为低人群特征
select user_id,点击次数,收藏次数,加购数,购买数,
concat(round(购买数/点击次数*100,2),'%') as 购买率
from user_behave
group by user_id
order by 购买数;

在这里插入图片描述
由以上结果可以看出,购买数比较少的用户分为两类,一类是点击次数少的,一方面的原因是这类用户可能不太会购物或者不喜欢上网的用户,可以加以引导,另一方面是从商品的角度考虑,是否商品定价过高或设计不合理;第二类用户是点击率高、收藏或加购物车也多的用户,此类用户可能正为商家的促销活动做准备,下单欲望较少且自制力较强,思虑多或者不会支付,购物难度较大。

4、基于时间维度了解用户的行为习惯

(1) 一天中用户的活跃时段分布
-- 一天中用户的活跃时段分布
select hours,count(behavetype) as 用户行为总量,
sum(case when behavetype = 'pv' THEN 1 ELSE 0 end) as 点击次数,
sum(case when behavetype = 'fav' THEN 1 ELSE 0 end) as 收藏次数,
sum(case when behavetype = 'cart' THEN 1 ELSE 0 end) as 加购数,
sum(case when behavetype = 'buy' THEN 1 ELSE 0 end) as 购买数
from user 
group by hours
order by hours;

部分数据展示:
在这里插入图片描述
在这里插入图片描述
这里用Excel做了个动态图表,可以从多维度展示不同时间点的指标。从图像能很清晰的看出,用户的活跃时间段。

(2) 一周中用户活跃时段分布

数据截取了11-27到12-03一个完整周内的数据

一周中用户活跃时段分布
select date_format(dates,'%W') as weeks,count(behavetype) as 用户行为总量,
sum(case when behavetype = 'pv' THEN 1 ELSE 0 end) as 点击次数,
sum(case when behavetype = 'fav' THEN 1 ELSE 0 end) as 收藏次数,
sum(case when behavetype = 'cart' THEN 1 ELSE 0 end) as 加购数,
sum(case when behavetype = 'buy' THEN 1 ELSE 0 end) as 购买数
from user 
where dates between '2017-11-27' and '2017-12-03'
group by weeks
order by date_format(dates,'%W');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由以上结果可以看出,每周用户活跃度较稳定,周末会有大幅度的提高。但从购买数来看,周五会有小幅下滑。

5、基于RFM模型找出有价值的用户

RFM模型是衡量客户价值和客户创利能力的重要工具和手段,其中由3个要素构成了数据分析最好的指标,分别是:

R-Recency(最近一次购买时间)
F-Frequency(消费频率)
M-Money(消费金额)

由于数据源没有相关的金额数据,暂且通过R和F的数据对客户价值进行打分。

(1) 计算R-Recency

由于数据集包含的时间是从2017-11-25至2017-12-03,这里选取2017-12-04作为计算日期,统计客户最近发生购买行为的日期距离2017-12-04间隔几天,再对间隔时间进行排名,间隔天数越少,客户价值越大,排名越靠前。

select a.*,(@rank:=@rank+1) as recent_rank
FROM
(SELECT user_id,datediff('2017-12-04',max(dates)) as recent
from user 
where behavetype = 'buy'
group by user_id 
order by recent) as a,
(select @rank:=0) as b;

在这里插入图片描述

(2) 计算F-Frequency

先统计每位用户的购买频率,再对购买频率进行排名,频率越大,客户价值越大,排名越靠前。

select a.*,(@rank2:=@rank2+1) as freq_rank
FROM
(select user_id,count(behavetype) as frequency
from user 
where behavetype = 'buy'
group by user_id 
order by frequency DESC) as a,
(select @rank2:=0) as b;

在这里插入图片描述

(3) 对用户进行评分

对有购买行为的用户按照排名进行分组,共划分为四组,对排在前四分之一的用户打4分,排在四分之一到四分之二的用户打3分,排在前四分之二到四分之三的用户打2分,剩余的用户打1分,按照这个规则分别对用户时间间隔排名打分和购买频率排名打分,最后把两个分数合并在一起作为该名用户的最终评分。

-- 设置参数提取有购买行为的用户总数
set @userBuyNum = (
select count(distinct user_id) as 购买用户数
from user 
where behavetype = 'buy');
-- 下面提取R+F分数
select r.*,f.frequency,f.freq_rank,
(
-- 下面是根据R的排名进行打分
(case when 
r.recent_rank <= @userBuyNum*1/4 then 4
when (r.recent_rank > @userBuyNum*1/4) and (r.recent_rank <= @userBuyNum*2/4) then 3
when (r.recent_rank > @userBuyNum*2/4) and (r.recent_rank <= @userBuyNum*3/4) then 2
else 1 end)+
-- 下面是根据F的排名进行打分
(case when 
f.freq_rank <= @userBuyNum*1/4 then 4
when (f.freq_rank > @userBuyNum*1/4) and (f.freq_rank <= @userBuyNum*2/4) then 3
when (f.freq_rank > @userBuyNum*2/4) and (f.freq_rank <= @userBuyNum*3/4) then 2
else 1 end)
) as user_value

from
-- 提取R的相关数据
(select a.*,(@rank:=@rank+1) as recent_rank
FROM
(SELECT user_id,datediff('2017-12-04',max(dates)) as recent
from user 
where behavetype = 'buy'
group by user_id 
order by recent) as a,
(select @rank:=0) as b) as r

left JOIN
-- 提取F的相关数据
(select a.*,(@rank2:=@rank2+1) as freq_rank
FROM
(select user_id,count(behavetype) as frequency
from user 
where behavetype = 'buy'
group by user_id 
order by frequency DESC) as a,
(select @rank2:=0) as b) as f

on r.user_id = f.user_id;

在这里插入图片描述
通过打分可以了解每位顾客的特性,从而实现差异化营销。也可以以R和F作为坐标轴,构建用户矩阵。R值越高,一般说明用户比较活跃。F值越高,说明用户越忠诚。从而对于落在不同象限内的用户,制定不同的营销策略。

6、商品维度的分析

-- 商品视图
create view item_behave AS
select item_id,count(behavetype),
sum(case when behavetype = 'pv' then 1 else 0 end) as 点击次数,
sum(case when behavetype = 'fav' then 1 else 0 end) as 收藏次数,
sum(case when behavetype = 'cart' then 1 else 0 end) as 加购数,
sum(case when behavetype = 'buy' then 1 else 0 end) as 购买数
from user 
group by item_id 
order by count(behavetype) desc;

select * from item_behave;

-- 品类视图
create view category_behave AS
select category_id,count(behavetype),
sum(case when behavetype = 'pv' then 1 else 0 end) as 点击次数,
sum(case when behavetype = 'fav' then 1 else 0 end) as 收藏次数,
sum(case when behavetype = 'cart' then 1 else 0 end) as 加购数,
sum(case when behavetype = 'buy' then 1 else 0 end) as 购买数
from user
group by category_id 
order by count(behavetype) desc;

select * from category_behave;

-- 商品种类:930317

select count(distinct item_id) as 商品种类 from user;

-- 类目种类:7106
select count(distinct category_id) as 类目种类 from user;

-- 每个类目下商品种类数
select category_id,count(distinct item_id) as 商品种类
from user 
group by category_id 
order by 商品种类 desc;

这里商品和类目都只能看到ID,没有名称能比较直观的看出结果,篇幅限制,这里不再对此部分进行详细分析,下面提出几个分析的维度:
(1)畅销商品的用户行为情况,指导商家选品,优化产品结构;
(2)畅销商品的分析中,从用户购物路径数据进行对比,找到不同产品间差异,进而发现好的优化方案,不断优化商品,进而提高转化率;
(3)畅销类目进行分析,转化率的平均情况。而在具体类目中,某些商品是否低于类目平均转化率,原因是?可优化的策略?
(4)一些商品收藏数很高,加购数很高,为何购买转化率很低?竞争对手有活动?价格太高?

六、总结

1、总体转化率只有2.24%,用户点击后收藏加购物车的转化率为9.46%,需要提高用户的购买意愿,可通过活动促销、精准营销等方式。

2、购买率高且点击量少的用户属于理智型购物者,有明确购物目标,受促销和广告影响少;而购买率低的用户可以认为是等待型或克制性群体,下单欲望较少且自制力较强,购物难度较大。

3、大部分用户的主要活跃时间在10点到23点,在20点到22点达到一天的顶峰。每周用户活跃度比较平稳,周末显著升高。可以根据用户的活跃时间精准推送商家的折扣优惠或促销活动,提高购买率。

4、通过R和F的数据对用户进行打分,然后根据商家的实际情况,对用户进行分组,进而对不同组的用户进行精准化营销,还可以通过对R和F的数据监测,推测客户消费的异动状况,挽回流失客户。

### 回答1: 阿里天池淘宝2017-11用户行为数据分析是基于Hive进行的。Hive是一个构建在Hadoop之上的数据仓库基础架构,提供了类似于SQL的查询语言HiveQL,使用户能够在大规模数据集上进行数据查询和分析。 在进行淘宝用户行为数据分析时,首先需要将原始数据导入Hive数据仓库中。数据源可以是来自淘宝的用户行为日志文件,其中包含了用户在淘宝平台上的各种行为,例如浏览商品、点击广告、添加购物车、购买等等。 然后,使用HiveQL语言编写查询语句,通过Hive进行数据分析数据分析的目标可能包括但不限于:用户行为的频率分布、用户购买转化率、热门商品排行、用户购买决策的时间分布等等。通过对用户行为数据进行分析,阿里天池淘宝可以洞察用户行为的规律,发现用户需求和购物习惯,从而为优化产品和推广策略提供参考。 Hive的优势之一是可以处理大规模的数据,因此对于淘宝这样拥有海量用户和数据的平台而言,使用Hive进行用户行为数据分析非常合适。此外,Hive还提供了数据仓库的概念,可以通过不同的方式将数据进行结构化和存储,以方便后续的查询和分析。 综上所述,阿里天池淘宝2017-11用户行为数据分析基于Hive,通过将用户行为数据导入Hive数据仓库,利用HiveQL进行查询和分析,从而洞察用户行为规律,为产品和推广策略优化提供依据。Hive作为一个大数据处理工具,对于处理淘宝这样海量用户和数据的平台来说是非常适用的。 ### 回答2: 阿里巴巴天池是一个面向数据科学家和机器学习爱好者的在线数据科学竞赛平台,提供丰富多样的数据集和竞赛任务。其中,淘宝用户行为数据分析天池平台的一个竞赛任务。在这个竞赛中,参赛者需要使用Hive来完成对淘宝2017年11月的用户行为数据进行分析。 Hive是基于Hadoop的数据仓库系统,它可以处理大规模数据,并提供了类似于SQL的查询语言,使得用户可以通过编写SQL式的语句来查询和分析数据。在淘宝用户行为数据分析任务中,Hive可以帮助分析师和数据科学家从大量数据中提取有用的信息。 通过Hive,我们可以利用淘宝用户行为数据进行各种分析,如用户购买行为、浏览行为、搜索行为等。我们可以使用Hive的查询语句来筛选、聚合和统计数据,以得出用户行为的关键指标。 一种常见的使用Hive进行用户行为数据分析的方法是利用Hive提供的内置函数和操作符来进行数据的转换和计算。通过使用Hive的内置函数,我们可以对用户行为数据进行预处理,如将日期格式化、提取关键字等。然后,我们可以使用Hive的聚合函数和操作符来计算用户行为的各种指标,如总购买金额、平均浏览次数等。 此外,Hive还支持用户自定义函数和UDAF(用户自定义聚合函数),这使得分析师和数据科学家可以根据自己的需求来扩展Hive的功能。通过编写自定义函数,我们可以在Hive中实现更加复杂的计算和分析。 总的来说,通过Hive,我们可以使用SQL式的查询语言对阿里天池淘宝2017年11月的用户行为数据进行分析。通过Hive的内置函数和操作符,以及用户自定义函数和UDAF,我们可以从大规模的数据中提取有用的信息,并计算出用户行为的各项指标。 ### 回答3: 阿里天池淘宝2017-11用户行为数据分析基于Hive,可以使用Hive这个大数据存储和计算框架对淘宝2017年11月的用户行为数据进行分析。 Hive是一个基于Hadoop的数据仓库基础架构,可以将大规模数据集存储在Hadoop集群中,并同时提供类似于关系型数据库的查询和分析功能。通过Hive,可以利用SQL的方式对大规模数据进行查询和分析,使得数据分析师更加方便地处理和分析海量数据。 对于淘宝2017-11用户行为数据,可以将其导入Hive中进行分析。首先,可以创建一个Hive表,定义各个字段的名称和数据类型,然后将用户行为数据导入到这个表中。接着,可以使用Hive提供的SQL语句进行各种查询和分析。 例如,可以通过查询语句统计每个用户的购买次数、浏览次数、加入购物车次数等行为情况,从而分析用户的购买意向和行为模式。也可以对用户的购买行为进行细分,比如按照地区、商品类别等进行分组,以了解不同用户群体的购物习惯和喜好。此外,还可以对用户行为的时间分布进行分析,了解用户在不同时间段的活跃度和购买偏好。 通过Hive的数据分析功能,可以深入挖掘淘宝2017-11用户行为数据中潜在的商业价值,为企业的市场营销和业务决策提供重要参考依据。
评论 85
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值