如何用DolphinDB分析淘宝用户的行为

技术如何使用DolphinDB进行淘宝用户行为分析如何使用DolphinDB进行淘宝用户行为分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Dolphin

如何用DolphinDB来分析淘宝用户的行为,相信很多没有经验的人都不知所措。因此,本文总结了出现问题的原因和解决方法,希望大家可以通过这篇文章来解决这个问题。

DolphinDB是新一代高性能分布式时序数据库,具有丰富的数据分析和分布式计算功能。本教程使用DolphinDB分析淘宝APP的用户行为数据,进一步分析业务问题。

数据来源:用户行为数据来自淘宝推荐-数据集-阿里巴巴云天池

我们将DolphinDB数据库和使用过的数据集打包到docker中。Docker包含DolphinDB的分布式数据库dfs://user_behavior。包含一个表用户,保存了2017年11月25日至2017年12月3日近百万淘宝APP用户的行为记录。我们使用组合分区的方法,第一层按日期分区,每天一个分区,第二层按userID哈希,一共分为180个分区。用户表的结构如下:

如何使用DolphinDB进行淘宝用户行为分析

各种用户行为类型的含义如下:

浏览产品详细信息页面

购买:商品购买

购物车:将商品添加到购物车。

收藏物品

00-1010本教程已经将DolphinDB和其中使用的数据打包到docker容器中。确保docker环境在使用前已经部署。Docker安装教程请参考https://docs.docker.com/install/.从http://www.dolphindb.cn/downloads/bigdata.tar.gz下载部署包,并在部署包所在的目录中执行以下代码。

解压缩部署包:

将gunzipbigdata.tar.gz容器快照作为镜像导入:

Bigdata.tar | Docker Import-My/bigdata 3360 v1获取镜像my/bigdata:v1的ID:

停靠图像打开容器(根据实际情况更换图像id):

dock run-DT-p 888:8848-namestimeid/bin/bash。/dolphin db/start.sh在浏览器地址栏输入本地IP地址3360888,如localhost:888,输入DolphinDB Notebook。以下代码在多芬数据库笔记本中执行。

docker中的DolphinDB许可证有效期至2019年9月1日。如果许可证文件过期,您只需要从DolphinDB官方网站下载社区版本,并用社区版本许可证替换bigdata.tar/dolphindb/dolphindb.lic。

00-1010查看数据量:

登录(' admin ',' 123456 ')

user=LoadTable(' DFS ://user _ behavior ',' user ')

来自user 98914533的select count (*)表中有98,914,533条记录。

分析用户从浏览到最终购买商品的全过程行为:

PV=ExecCount(*)from user webbehavior=' PV ' 88596903 uv=Count(execcdistinctuseridfrom user)987984这9天,淘宝APP页面访问量为88,596,903,独立访客数为987,984。

上面使用的exec是DolphinDB独有的功能,类似于select。两者的区别在于select语句总是返回一个表。当exec选择一列时,它返回一个向量,当它与aggregate函数一起使用时,它返回一个标量,当它与pivoy by一起使用时,它返回一个矩阵,这便于后续的数据计算。

统计仅浏览页面一次的用户数量:

onceUserNum=count(select count(behavior) from user group by userID having count(behavior)=1)

92

jumpRate=onceUserNum\UV*100

0.009312

只有92个用户只浏览过一个页面就离开了APP,占总用户数的0.0093%,几乎可以忽略不计,说明淘宝有足够的吸引力让用户停留在APP中。

统计各个用户行为的数量:

behaviors=select count(*) as num from user group by behavior

如何使用DolphinDB进行淘宝用户行为分析

计算从有浏览到有意向购买的转化率:

将商品加入购物车和收藏商品都可以认为用户有意向购买。统计有意向购买的用户行为数量:

fav_cart=exec sum(num) from behaviors where behavior="fav" or behavior="cart"

8318654

intentRate=fav_cart\PV*100

9.389328

从浏览到有意向购买只有9.38%的转化率。

buy=(exec num from behaviors where behavior="buy")[0]

1998976

buyRate=buy\PV*100

2.256259

intent_buy=buy\fav_cart*100

24.030041

从浏览到最终购买只有2.25%的转化率,从有意向购买到最终购买的转化率为24.03%,说明大部分用户用户会把中意的商品收藏或加入购物车,但不一定会立即购买。

对各种用户行为的独立访客进行统计:

userNums=select count(userID) as num from (select count(*) from user group by behavior,userID) group by behavior

如何使用DolphinDB进行淘宝用户行为分析

pay_user_rate=(exec num from userNums where behavior="buy")[0]\UV*100

67.852313

这9天中,使用淘宝APP的付费用户占67.8%,说明大部分用户会在淘宝APP上购物。

统计每天各种用户行为的用户数量:

dailyUserNums=select sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user group by date(behaveTime) as date

如何使用DolphinDB进行淘宝用户行为分析

周五、周六和周日(2017.11.25、2017.11.26、2017.12.02、2017.12.03)淘宝APP的访问量明显增加。

iif是DolphinDB的条件运算符,它的语法是iif(cond, trueResult, falseResult),cond通常是布尔表达式,如果满足cond,则返回trueResult,如果不满足cond,则返回falseResult。

分别统计每天不同时间段下各种用户行为的数量。我们提供了以下两种方法:

第一种方法是分别统计各个时间段的数据,再把各个结果合并。例如,统计工作日2017.11.29(周三)不同时间段的用户行为数量。

re1=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T00:00:00 : 2017.11.29T05:59:59

re2=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T06:00:00 : 2017.11.29T08:59:59

re3=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T09:00:00 : 2017.11.29T11:59:59

re4=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T12:00:00 : 2017.11.29T13:59:59

re5=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T14:00:00 : 2017.11.29T17:59:59

re6=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T18:00:00 : 2017.11.29T21:59:59

re7=select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between 2017.11.29T22:00:00 : 2017.11.29T23:59:59

re=unionAll([re1,re2,re3,re4,re5,re6,re7],false)

如何使用DolphinDB进行淘宝用户行为分析

这种方法比较简单,但是需要编写大量重复代码。当然也可以把重复代码封装成函数。

def calculateBehavior(startTime,endTime){
    return select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user where behaveTime between startTime : endTime
}

这样只需要指定时间段的起始时间即可。

另外一种方法是通过DolphinDB的Map-Reduce框架来完成。例如,统计工作日2017.11.29(周三)的用户行为。

def caculate(t){
	return select first(behaveTime) as time, sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from t	
}
ds1 = repartitionDS(<select * from user>, `behaveTime, RANGE,2017.11.29T00:00:00 2017.11.29T06:00:000 2017.11.29T09:00:00 2017.11.29T12:00:00 2017.11.29T14:00:00 2017.11.29T18:00:00 2017.11.29T22:00:00 2017.11.29T23:59:59)
WedBehavior = mr(ds1, caculate, , unionAll{, false})

如何使用DolphinDB进行淘宝用户行为分析

我们使用repartitionDS函数对user表重新按照时间范围来分区(不改变user表原来的分区方式),并生成多个数据源,然后通过mr函数,对数据源进行并行计算。DolphinDB会把caculate函数应用到各个数据源上,然后把各个结果合并。

工作日,凌晨(0点到6点)淘宝APP的使用率最高,其次是下午(14点到16点)。

统计周六(2017.11.25)和周日(2017.11.26)的用户行为:

ds2 = repartitionDS(<select * from user>, `behaveTime, RANGE,2017.11.25T00:00:00 2017.11.25T06:00:000 2017.11.25T09:00:00 2017.11.25T12:00:00 2017.11.25T14:00:00 2017.11.25T18:00:00 2017.11.25T22:00:00 2017.11.25T23:59:59)
SatBehavior = mr(ds2, caculate, , unionAll{, false})

如何使用DolphinDB进行淘宝用户行为分析

ds3 = repartitionDS(<select * from user>, `behaveTime, RANGE,2017.11.26T00:00:00 2017.11.26T06:00:000 2017.11.26T09:00:00 2017.11.26T12:00:00 2017.11.26T14:00:00 2017.11.26T18:00:00 2017.11.26T22:00:00 2017.11.26T23:59:59)
SunBehavior = mr(ds3, caculate, , unionAll{, false})

如何使用DolphinDB进行淘宝用户行为分析

周六和周日各个时间段淘宝APP的使用率都比工作日的使用率要高。同样地,周六日淘宝APP使用高峰是凌晨(0点到6点)。

3. 商品分析

allItems=select distinct(itemID) from user

4142583

在这9天中,一共涉及到4,142,583种商品。

统计每个商品的购买次数:

itemBuyTimes=select count(userID) as times from user where behavior="buy" group by itemID order by times desc

统计销量前20的商品:

salesTop=select top 20 * from itemBuyTimes order by times desc

ID为3122135的商品销量最高,一共有1,408次购买。

统计各个购买次数下商品的数量:

buyTimesItemNum=select count(itemID) as itemNums from itemBuyTimes group by times order by itemNums desc

结果显示,绝大部分(370,747种)商品在这9天中都只被购买了一次,占所有商品的8.94%。购买次数越多,涉及到的商品数量越少。

统计所有商品的用户行为数量:

allItemsInfo=select sum(iif(behavior=="pv",1,0)) as pageView, sum(iif(behavior=="fav",1,0)) as favorite, sum(iif(behavior=="cart",1,0)) as shoppingCart, sum(iif(behavior=="buy",1,0)) as payment from user group by itemID

统计浏览量前20的商品:

pvTop=select top 20 itemID,pageView from allItemsInfo order by pageView desc

浏览量最高的商品ID为812879,共有29,720次浏览,但是销量仅为135,没有进入到销量前20。

统计销量前20的商品各个用户行为的数量:

select * from ej(salesTop,allItemsInfo,`itemID) order by times desc

销量最高的商品3122135的浏览量为1777,没有进入浏览量前20,从浏览到购买的转化率高达79.2%,该商品有可能是刚需用品,用户不需要太多浏览就决定购买。

扩展练习:

(1)计算2017.11.25每小时淘宝APP的购买率(购买率=购买次数/总行为次数*100%)

(2)找出购买次数最多的用户以及他购买最多的商品

(3)计算商品ID为3122135的商品在各个时间段中的购买次数

(4)统计每个类别每个行为的次数

(5)计算每个类别中销量最高的商品

看完上述内容,你们掌握如何使用DolphinDB进行淘宝用户行为分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153431.html

(0)

相关推荐

  • 京东自动抢茅台脚本 Python

    技术京东自动抢茅台脚本 Python 京东自动抢茅台脚本 Python这期为大家继续分享个GitHub上面的大神开源的项目,大家可以认真看看,然后把对自己刚兴趣的收藏下来!正文开始
    开始本文前,先问大家

    礼包 2021年11月5日
  • 有什么软件整理mac的menubar(mac隐藏menubar)

    技术MenuBar Stats for mac是什么工具小编给大家分享一下MenuBar Stats for mac是什么工具,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MenuBar Stats M

    攻略 2021年12月24日
  • ram架构和ram存储(嵌入式ram)

    技术如何进行嵌入式中常用内存RAM浅析本篇文章给大家分享的是有关如何进行嵌入式中常用内存RAM浅析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.说明随着

    攻略 2021年12月18日
  • 记录ABAP开发的日常——SmartForms模板固定N行显示

    技术记录ABAP开发的日常——SmartForms模板固定N行显示 记录ABAP开发的日常——SmartForms模板固定N行显示前言:这里面介绍一下SmartForms里面使用Template的情况下

    礼包 2021年12月20日
  • 红领巾心向党征文,求一个红领巾心向党的童谣

    技术红领巾心向党征文,求一个红领巾心向党的童谣红领巾心向党 童谣 自己写的,不得抄袭,发到我邮箱 不发到邮箱不给分 :我爱红领巾 少先队员真光荣, 庄严宣誓记心中红领巾心向党征文。 爱国爱校爱班级, 认真学习要用功。 文

    生活 2021年10月29日
  • Java中混淆技术有几种

    技术Java中混淆技术有几种这篇文章给大家分享的是有关Java中混淆技术有几种的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。到目前为止,对于Java程序的保护,混淆技术还是最基本的保护方法。J

    攻略 2021年12月8日