精华内容
下载资源
问答
  • 愉悦的一周又要开始了,本周菌哥打算用几期文章为大家分享一个之前在B站自学的一个项目——基于flink的电商用户行为数据分析。本期我们先对项目整体功能和模块做一个介绍。       &...

    本文已收录github:https://github.com/BigDataScholar/TheKingOfBigData,里面有大数据高频考点,Java一线大厂面试题资源,上百本免费电子书籍,作者亲绘大数据生态圈思维导图…持续更新,欢迎star!

    前言

            愉悦的一周又要开始了,本周菌哥打算用几期文章为大家分享一个之前在B站自学的一个项目——基于flink的电商用户行为数据分析。本期我们先对项目整体功能和模块做一个介绍。

    在这里插入图片描述


            正式介绍项目整体之前,我们来探讨一下批处理和流处理技术。

    批处理 VS 流处理

            批处理和流处理代表了现在大数据处理领域两种完全不同的数据处理方式。

            下面两组分别列出的分别是批处理和流处理的"代表作"。
    在这里插入图片描述
            左边Hadoop和Spark是“批处理”的代表作,其中Spark可以被认为是批处理的“巅峰之作”,已经非常成熟,并且社区也非常广泛,应用的领域也很多。

            右边Storm和Flink是“流处理”的代表作,其中Storm是流处理的“先锋”,但它本身有很多问题。Storm是首次真正意义上实现“流处理”,来一个数据就处理一个。但它随之带来的一个问题就是,在大数据应用场景下,吞吐量不够。另外如果数据出现乱序,Storm也处理不了。而Flink的引入,在Storm的基础上,完美的解决了着这两个问题。Flink可以说,是目前“流处理”的一个高峰!

            那具体“批处理”和“流处理”有哪些特点,我们来做一个对比:

    批处理

    • 批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。可以认为,处理的是用一个固定时间间隔分组的数据点集合。批处理模式中使用的数据集通常符合下列特征:

            – 有界:批处理数据集代表数据的有限集合

            – 持久:数据通常始终存储在某种类型的持久存储位置中

            – 大量批处理操作通常是处理极为海量数据集的唯一方法

            

    流处理

    • 流处理可以对随时进入系统的数据进行计算。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。流处理中的数据集是“无边界”的,这就产生了几个重要的影响:

            – 可以处理几乎无限量的数据,但同一时间只能处理一条数据,不同记录间只维持最少量的状态。

            – 处理工作是基于事件的,除非明确停止否则没有“尽头”。

            – 处理结果立刻可用,并会随着新数据的抵达继续更新

    在这里插入图片描述

            很好,回顾了批处理和流处理的区别之后,我们直接进入项目的整体介绍!

            

    项目整体介绍

    在这里插入图片描述
            
            电商平台中的用户行为频繁且较复杂,系统上线运行一段时间后,可以收集到大量的用户行为数据,进而利用大数据技术进行深入挖掘和分析,得到感兴趣的商业指标并增强对风险的控制

            电商用户行为数据多样,整体可以分为用户行为习惯数据业务行为数据两大类。用户的行为习惯数据包括了用户的登录方式上线的时间点及时长点击和浏览页面页面停留时间以及页面跳转等等,我们可以从中进行流量统计和热门商品的统计,也可以深入挖掘用户的特征;这些数据往往可以从web服务器日志中直接读取到。而业务行为数据就是用户在电商平台中针对每个业务(通常是某个具体商品)所作的操作,我们一般会在业务系统中相应的位置埋点,然后收集日志进行分析。业务行为数据又可以简单分为两类:一类是能够明显地表现出用户兴趣的行为,比如对商品的收藏喜欢评分评价,我们可以从中对数据进行深入分析,得到用户画像,进而对用户给出个性化的推荐商品列表,这个过程往往会用到机器学习相关的算法;另一类则是常规的业务操作,但需要着重关注一些异常状况以做好风控,比如登录和订单支付。

    在这里插入图片描述

    项目主要模块

            基于对电商用户行为数据的基本分类,我们可以发现主要有以下三个分析方向:

            1、热门统计

            利用用户的点击浏览行为,进行流量统计、近期热门商品统计等。

            2、偏好统计

            利用用户的偏好行为,比如收藏、喜欢、评分等,进行用户画像分析,给出个性化的商品推荐列表。

            3、风险控制

            利用用户的常规业务行为,比如登录、下单、支付等,分析数据,对异常情况进行报警提示。

    总结:

    • 统计分析
      – 点击、浏览
      – 热门商品、近期热门商品、分类热门商品、流量统计
    • 统计分析
      – 收藏、喜欢、评分、打标签
      – 用户画像,推荐列表(结合特征工程和机器学习算法)
    • 风险控制
      – 下订单、支付、登录
      – 刷单监控,订单失效监控,恶意登录(短时间内频繁登录失败)监控

            大的方面,我们可以将其分为实时统计分析业务流程及风险控制领域
    在这里插入图片描述
            但本项目限于数据,我们只实现热门统计和风险控制中的部分内容,将包括以下四大模块:实时热门商品统计实时流量统计恶意登录监控订单支付失效监控

    在这里插入图片描述
            项目模块设计,可以参考这张图:
    在这里插入图片描述
            由于对实时性要求较高,我们会用flink作为数据处理的框架。在项目中,我们将综合运用flink的各种API,基于EventTime去处理基本的业务需求,并且灵活地使用底层的processFunction,基于状态编程CEP去处理更加复杂的情形。
            

    数据源解析

            我们准备了一份淘宝用户行为数据集,保存为csv文件。本数据集包含了淘宝上某一天随机一百万用户的所有行为(包括点击购买收藏喜欢)。数据集的每一行表示一条用户行为,由用户ID商品ID商品类目ID行为类型时间戳组成,并以逗号分隔。关于数据集中每一列的详细描述如下:

    字段名数据类型说明
    userIdLong加密后的用户ID
    itemIdLong加密后的商品ID
    categoryIdInt加密后的商品所属类别ID
    behaviorString用户行为类型,包括(‘pv’, ‘’buy, ‘cart’, ‘fav’)
    timestampLong行为发生的时间戳,单位秒

            另外,我们还可以拿到web服务器的日志数据,这里以apache服务器的一份log为例,每一行日志记录了访问者的IP、userId、访问时间、访问方法以及访问的url,具体描述如下:

    字段名数据类型说明
    ipString访问的 IP
    userIdLong访问的 user ID
    eventTimeLong访问时间
    methodString访问方法 GET/POST/PUT/DELETE
    urlString访问的 url

            由于行为数据有限,在实时热门商品统计模块中可以使用UserBehavior数据集,而对于恶意登录监控和订单支付失效监控,我们只以示例数据来做演示。

    在这里插入图片描述

    小结

            本期内容为大家回顾了关于批处理和流处理的特性及“代表作”分析,然后对于项目整体和主要模块做了一个说明。至此,基于flink的电商用户行为数据分析【1】| 项目整体介绍的内容就到这里,从下一期开始,我们就要正式步入实际需求,去完成功能模块的开发。

            你知道的越多,你不知道的也越多。我是Alice,我们下一期见!受益的朋友记得三连支持小菌!

    文章持续更新,可以微信搜一搜「 猿人菌 」第一时间阅读,思维导图,大数据书籍,大数据高频面试题,海量一线大厂面经…期待您的关注!

    展开全文
  • 电商用户行为数据分析

    万次阅读 多人点赞 2019-05-15 20:00:54
    前言 本文针对淘宝app的运营数据,以行业常见指标对用户行为进行分析,包括 一、提出问题 ...本次想通过对淘宝用户行为数据分析,解决以下业务问题: 以下为分析逻辑和用到适用的业务指标: ...

    前言

    本文针对淘宝app的运营数据,以行业常见指标对用户行为进行分析,包括UV、PV、新增用户分析、漏斗流失分析、留存分析、用户价值分析、复购分析等内容;
    本文使用的分析工具以MySQL为主,涉及分组汇总,引用变量,视图,关联查询等内容。

    一、提出问题

    1.本次分析的业务问题以及分析逻辑

    本次想通过对淘宝用户行为数据的分析,为以下问题提供解释和改进建议:

    1)基于AARRR漏斗模型,使用常见电商分析指标,从新增用户数量、各环节转化率、新用户留存率三个方面进行分析,确定影响新增用户数量的因素,找到需要改进的转化环节,发现留存现存问题

    2)研究用户在不同时间尺度下的行为规律,找到用户在不同时间周期下的活跃规律

    3)找出最具价值的核心付费用户群,对这部分用户的行为进行分析

    4)找到用户对不同种类商品的偏好,制定针对不同商品的营销策略

    以下为本次分析逻辑:
    在这里插入图片描述

    2.本次分析所使用的模型和体系

    电商分析通常从四个方面展开,即流程效率分析、流量/用户分析、商品分析、产品分析,通过流程效率拆解追踪问题产生环节,通过用户粘性、价值、满意度分析来进行用户分层及流失预警,通过商品生命周期及关联分析来划分商品等级,通过产品分析提升用户浏览-购买过程体验;
    本文通过常用的电商数据分析指标,采用AARRR漏斗模型拆解用户进入APP后的每一步行为;并使用RFM模型,对用户价值进行评价,找到最有价值的用户群,针对这部分用户进行差异化营销。
    电商数据分析体系
    电商数据分析指标
    AARRR漏斗模型

    二、理解数据

    1.数据来源

    阿里云天池:https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1

    数据集包含了2017年11月25日至2017年12月3日之间,约一百万随机用户的所有行为(行为包括点击、购买、加购、喜欢)。数据集大小情况为:用户数量约100万(987,994),商品数量约410万(4,162,024),商品类目数量9,439以及总的淘宝用户行为记录数量为1亿条(100,150,807)。

    2.本次选取的数据样本

    原数据集一共有1亿条数据记录,数据量庞大,本次分析选取了大约100万条记录进行分析,数据整体情况参考如下表格。

    3.字段含义及数据量

    在这里插入图片描述

    三、数据清洗

    1. 选择子集

    数据集的每一个字段都有效,此处全部选择。

    2. 列名重命名

    原数据集没有表头,用sql语句创建表及6个字段,把淘宝用户行为数据导入Mysql数据库。

    3. 删除重复值

    数据导入时,将主键定义为:user_id,item_id,timestamps,保证没有重复数据。

    4. 缺失值处理

    在创建表格的时候,5个字段均定义为NOT NULL,数据导入保证没有缺失值。

    5.一致化处理

    转换时间数据类型,并添加datentime,dates,hours三个字段,将转换好的数据放进去

    ALTER TABLE UserBehavior ADD COLUMN datentime TIMESTAMP(0) NULL;
    UPDATE UserBehavior
    SET datentime = FROM_UNIXTIME(timestamps);
    
    ALTER TABLE UserBehavior ADD COLUMN dates CHAR(10) NULL;
    UPDATE UserBehavior
    SET dates = SUBSTRING(datentime FROM 1 FOR 10);
    
    ALTER TABLE UserBehavior ADD COLUMN hours CHAR(10) NULL;
    UPDATE UserBehavior
    SET hours = SUBSTRING(datentime FROM 12 FOR 2);
    
    6. 数据异常值处理

    检查日期是否在规定范围内:2017年11月25日至2017年12月3日。

    SELECT MAX(timestamps),
           MIN(timestamps),
           MAX(datentime),
           MIN(datentime)
    FROM UserBehavior;
    

    检查时间是否正确,并将不符合规定的数据删除

    DELETE FROM UserBehavior
    WHERE datentime < '2017-11-25 00:00:00'
    OR datentime > '2017-12-04 00:00:00';
    

    一共删除了509行数据,再次验证日期时间的准确性,结果符合要求。

    完成清洗后的数据:
    在这里插入图片描述

    四、构建模型

    1.分析用户行为的漏斗模型

    数据主要涉及每日新增用户数,用户购买转化环节从浏览到最终购买整个流程的流失情况(包括浏览、收藏、加购、购买),用户次日、3日、7日留存情况,以及用户在研究时段内的复购次数和复购率

    1)获客:每日新增用户情况

    此处选取2017年11月25日为APP启用的首天,并定义新增用户为出现第一次购买行为的用户。
    如下图所示,2017年11月25日至2017年12月3日期间,每天都有新增用户,但是新增用户在递减,在12月2日当天有小幅回涨,故周末推出的营销活动或正在预热的双十二营销活动能够吸引新用户。
    在这里插入图片描述
    2)转化:转化及流失情况

    ● AAP在9天内的各项指标情况如下

    访问用户总数(UV):9768
    页面总访问量(PV):897293

    #计算UV,PV
    SELECT COUNT(DISTINCT(user_id)) AS 'UV',
    (SELECT count(behavior) FROM UserBehavior
    WHERE behavior = 'pv') AS 'PV',
    FROM UserBehavior;
    

    在这里插入图片描述
    ● 跳失率=只点击一次浏览的用户数量/总用户访问量

    当统计时长为9天时,有586个人浏览了一个页面就离开了APP,占总访问量的0.65%,几乎可以忽略不计,说明淘宝有足够的吸引力让用户停留。

    SELECT COUNT(DISTINCT user_id) AS '跳失用户数'
    FROM UserBehavior
    WHERE user_id NOT IN(SELECT DISTINCT user_id FROM UserBehavior WHERE behavior = 'fav')
    AND user_id NOT IN(SELECT DISTINCT user_id FROM UserBehavior WHERE behavior = 'cart')
    AND user_id NOT IN(SELECT DISTINCT user_id FROM UserBehavior WHERE behavior = 'buy');
    

    在这里插入图片描述
    ● 用户行为转化漏斗计算

    在购物环节中收藏和加入购物车都是确定购物意向的行为,没有先后之分,所以将这两个环节合并为购物环节中的一步。
    由下图可以看到,从浏览到确定购买意向只有9%左右的转化率,夹点出现在点击-收藏或加购这一过程中,可能原因是用户花了大量时间寻找合适的产品,可以针对性的优化平台的筛选功能,让用户能够更容易的找到合适产品,并将流程指标再细化后进行分析,找出影响用户流失的关键问题点。
    在这里插入图片描述

    # 首先创建用户行为视图
    CREATE VIEW user_behavior
    AS
    SELECT user_id, count(behavior),
    SUM(CASE WHEN behavior='pv' THEN 1 ELSE 0 END) AS '点击数',
    SUM(CASE WHEN behavior='fav' THEN 1 ELSE 0 END) AS '收藏数',
    SUM(CASE WHEN behavior='cart' THEN 1 ELSE 0 END) AS '加购数',
    SUM(CASE WHEN behavior='buy' THEN 1 ELSE 0 END) AS '购买数'
    FROM userbehavior
    GROUP BY user_id
    ORDER BY COUNT(behavior) DESC;
    # 再计算转化率
    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_behavior;
    

    转化率
    ● 独立访客漏斗计算

    APP约有68%的付费用户,用户付费转化率相当高。

    SELECT behavior,COUNT(DISTINCT user_id) AS '用户数'
    FROM userbehavior
    GROUP BY behavior
    ORDER BY COUNT(DISTINCT user_id) DESC;
    

    在这里插入图片描述
    3)留存:新增用户的留存情况

    由下表数据,次日、3日、7日留存率均维持在20%左右,数据作为周留存率来看,表现还是非常优秀的,但作为次日留存来看,就不是很理想了,可以结合产品设计和新用户转化路径来分析用户的流失原因,通过不断的修改和调整来降低用户流失,提升次日留存率;另外,12月2日、3日的留存率相较之前有2%-8%的上涨,故促销活动能为提升留存带来一定正向的影响。

    注:本次研究把2017年11月25日当天的用户全作为新用户,与实际情况不符,考虑实际情况进行分析,淘宝APP的留存已经过了流失期和蒸馏期,进入稳定期,在这样的条件下,若留存率达到20%还是很可观的。
    在这里插入图片描述
    4)变现:复购分析

    下图展示了不同复购次数对应的用户数量,发现复购5次以上的用户仅占有购买行为用户数的10%,我们发现高复购次数的用户很少,商家可以从商品质量、服务质量、物流体验三方面寻找原因,定位所在问题点,寻求高复购率突破。
    在这里插入图片描述
    经下面代码块计算,复购率为65%,淘宝APP的整体复购率相对可观,应将经营重点转化为培养用户的忠诚度上,鼓励用户更高频次的消费。

    SELECT CONCAT(ROUND
    (SUM(case when 购买数>=2 then 1 else 0 end) 
     / SUM(case when 购买数>0 then 1 else 0 end) * 100), '%') 
     AS '复购率' 
    FROM user_behavior;
    

    在这里插入图片描述

    2.不同时间尺度下的用户行为模式分析

    分别以研究全时段(9天,此处觉得再研究单周意义不大),日为单位,分析用户购买行为,找出活跃用户规律。

    1)分析2017年11月25日至12月3日 9天中每天的用户行为

    由图可见在研究日期范围内用户活跃度较为平稳,仅在12月2日、3日有明显增长,该日期和11月25日、26日同为周末,故除特别营销活动外,周末能为提升用户活跃度带来的影响较小;
    另外,几项指标在12月2日点击数涨幅最大,收藏数涨幅最小,可能是双十二促销活动刚开始预热,用户开始大量浏览商品;加入购物车是用户在批量购买商品时的前置动作,因此加入购物车的行为发生次数同样大幅增加。
    在这里插入图片描述

    SELECT dates, COUNT(behavior),
    SUM(CASE WHEN behavior='pv' THEN 1 ELSE 0 END) AS '点击数',
    SUM(CASE WHEN behavior='fav' THEN 1 ELSE 0 END) AS '收藏数',
    SUM(CASE WHEN behavior='cart' THEN 1 ELSE 0 END) AS '加购数',
    SUM(CASE WHEN behavior='buy' THEN 1 ELSE 0 END) AS '购买数'
    FROM userbehavior
    GROUP BY dates
    ORDER BY dates;
    

    2)分析一天中每小时的用户行为

    这里用SQL提取每天的数据,用Excel绘成动态图表,观察发现每日各项行为数据变化趋势相同,这里我们仅选择一个周五2017年12月1日进行分析;
    观察下图发现,12月1日这天共有两个高峰期,分别是晚上20点至22点和上午10点至下午13点,对应了许多上班族中午和晚上休息的时间,符合大部分人的作息规律;
    另外,我们发现加购和收藏量的峰值出现在晚上20-22点,而购买量的峰值则在早上10点,大部分人喜欢晚上收藏加购,早晨购买,说明收藏和购买是异步的用户行为,收藏的峰值通常发生在购买行为的前一段时间,加购则是购买的前置动作,其峰值也会发生在购买行为前。
    在这里插入图片描述

    3. 用户价值分析

    1)用户价值分层(RFM模型)

    由于数据缺少M(消费金额)列,暂且通过R(最近一次购买时间)和F(消费频率)的数据对客户价值进行打分。

    通过打分可以了解每位顾客的特性,从而实现差异化营销。例如对于user_value=44的用户,可划分为VIP用户重点关注,并且投放活动时不要引起反感;而对于user_value=14这类用户粘性不强而消费时间间隔较短,运营活动可以重点针对这部分用户,提高用户使用产品的频率,可以通过拼团打折、积分兑换、捆绑销售等活动唤起用户注意力;对于user_value=41这类忠诚度不高而购买能力强的用户,则需要关注他们的购物习惯做精准化营销。
    在这里插入图片描述

    SELECT r.user_id,f.frequency,recent_rank,freq_rank,
    CONCAT(
    CASE WHEN recent_rank<=(6589)/4 THEN '4' 
    WHEN recent_rank>(6589)/4 AND recent_rank<=(6589)/2 THEN '3'
    WHEN recent_rank>(6589)/2 AND recent_rank<=6589/4*3 THEN '2'
    ELSE '1' END,
    CASE WHEN freq_rank<=(6589)/4  THEN '4' 
    WHEN freq_rank>(6589)/4  AND freq_rank<=(6589)/2 THEN '3'
    WHEN freq_rank>(6589)/2 AND freq_rank<=6589/4*3 THEN '2'
    ELSE '1' END
    )AS user_value
    FROM 
    (SELECT a.*,(@rank:=@rank+1) AS recent_rank FROM
    (SELECT user_id,
    DATEDIFF('2017-11-25',max(dates)) AS recent
    FROM userbehavior AS t1 WHERE behavior='buy' GROUP BY user_id ORDER BY recent
    )AS a,(SELECT @rank:=0) AS b) AS r,
    (SELECT *,(@rank2:=@rank2+1) AS freq_rank FROM
    (SELECT user_id,count(*) AS frequency FROM userbehavior WHERE behavior='buy' 
    GROUP BY user_id  ORDER BY frequency DESC)
    AS a,(SELECT @rank2:=0)AS b) AS f 
    WHERE r.user_id=f.user_id;
    
    4.商品销售分析

    1)商品销售情况

    统计所有商品的购买次数,同时找到购买次数、浏览次数、收藏次数和加入购物车次数最多的商品。

    本次分析的商品共有392778中,用户购买的商品共有16743种,却没有出现购买数量非常集中的商品;在本次统计的数据中,只购买一次的商品有14817种,占用户购买商品数的88.5%,说明商品售卖主要依靠长尾商品的累积效应,而非爆款商品的带动。
    在这里插入图片描述

    SELECT product_buytimes, COUNT(*) AS product_type_count
    FROM
    (SELECT COUNT(user_id) AS product_buytimes
    FROM UserBehavior
    WHERE behavior = 'buy'
    GROUP BY item_id) AS product_buypool
    GROUP BY product_buytimes
    ORDER BY product_buytimes ASC;
    

    ● 商品销量top20
    列出销量前20位的商品,item_ID为3122135的商品销量最高,为15次,那么是否浏览次数最高的商品销量也最高呢?
    在这里插入图片描述
    ● 商品浏览top20
    我们看到浏览数最高的商品为812879,而浏览次数最高的商品甚至没有进入销量前20,说明这些吸引用户更多注意力的商品没有很好的转化为实际销量。
    在这里插入图片描述
    ● 商品收藏top20
    下图为收藏数前20的商品,可以看到排在收藏前1、15、20位的商品在浏览top20中也有出现,分别排名2、10、4,说明收藏和浏览的同步几率更大。
    在这里插入图片描述
    ● 商品加购top20
    在加入购物车次数最多的前20个商品中,可以看到销量第3、4、10位的商品在加购数中排第1、10、8,说明加购数与销量的关系更为直接。
    在这里插入图片描述

    2)商品类目销售情况
    商品类目销售情况中有较为明显的集中趋势,top20如下表所示,可根据畅销类目优化商品展示、加强商品捆绑,进而提高销量。
    在这里插入图片描述

    SELECT category_id , COUNT(*) AS cat_count
    FROM userbehavior
    WHERE behavior = 'buy'
    GROUP BY category_id
    ORDER BY cat_count DESC;
    

    五、结论与建议

    本文分析了淘宝APP用户行为数据共100万条,从四个不同角度提出业务问题,使用AARRR模型和RFM模型分析数据给出如下结论和建议。

    1.通过AARRR模型分析用户使用的各个环节

    1)获取用户
    由于数据中没有给出每个用户第一次的登陆的时间,我们暂且把2017年11月25日作为每个用户的第一次登陆时间来处理。

    在研究时段内,每天都有新增用户,但是新增用户在递减,仅在推出营销活动的周末有小幅回升,故推出的营销活动能够对新用户产生吸引,营销活动的推广渠道或许是用户量增长多少的关键。

    2)激活用户
    在购物环节中收藏和加入购物车都是确定购物意向的行为,没有先后之分,所以将这两个环节合并为购物环节中的一步。

    从浏览到有购买意向只有9%的转化率,当然有一部分用户是直接购买,但也说明大多数用户以浏览页面为主而购买转化较少,此处为转化漏斗中需要改善和提高的环节。

    针对这一环节改善转化率的建议有:
    ①优化电商平台的搜索匹配度和推荐策略,主动根据用户喜好推荐相关的商品,优化商品搜索的准确度和聚合能力,对搜索结果排序优先级进行优化;
    ②给客户提供同类产品比较的功能,让用户不需要多次返回搜索结果反复查看,便于用户确定心怡产品;
    ③在商品详情页的展示上突出用户关注的重点信息,精简信息流的呈现方式,减少用户寻找信息的成本;
    ④优化加入购物车和收藏按键的触达,用户在滑屏时也能方便触达,增加功能使用的次数。

    3)提高留存
    留存分析同样把2017年11月25日作为每个用户的第一次登陆时间来处理。

    淘宝APP的留存相对而言较为稳定,周留存表现优秀,但次日留存略显不理想,可以结合产品设计和新用户转化路径来分析用户的流失原因,通过不断的修改和调整来降低用户流失,提升次日留存率;另外,12月2日、3日的留存率相较之前有2%-8%的上涨,故营销活动能为提升留存带来一定正向的影响,可以多推出一些营销活动,让用户提高使用淘宝电商平台的频率。

    4)增加收入
    使用APP的用户中有61%的付费用户,付费转化率相当高。

    有购买行为的用户中,大概有65%的用户会重复购买,淘宝APP的整体复购率相对可观,应将经营重点转化为培养用户的忠诚度上,鼓励用户更高频次的消费。

    高复购次数的用户少,商家可以从商品质量、服务质量、物流体验三方面寻找原因,定位所在问题点,寻求高复购率突。

    5)用户推荐
    淘宝本身用户基数庞大,知名度高,个人认为在一二线城市的用户基本已经达到饱和,传播工作需要针对三四线城市的渠道下沉,在这些地区针对用户价格敏感度高的特性开展类似拼多多的拼团转发和打折促销活动,扩大这部分用户的使用率。

    2.研究用户在不同时间尺度下的行为规律,找到用户在不同时间周期下的活跃规律

    研究的9天内共有两个周末,第一个周末仅有小幅上涨,而第二个周末因有营销活动预热,出现点击量和加购量的大幅上涨,故周末可多推出营销活动,上班族周末空闲时间的消费欲望还存在很大的挖掘潜力。

    每天有两个高峰期,晚8点至10点,上午10点至下午1点,用户通常喜欢晚上加购收藏,早上进行购买。

    针对高峰期进行营销活动收益最高,此时使用人数最多,活动容易触达用户,营销活动的形式可以通过促销、拼团等形式进行。

    3.通过RFM模型找出最具价值的核心付费用户群,对这部分用户的行为进行分析

    评分是44的用户是体系中的最有价值用户,需要重点关注。并且活动投放时需谨慎对待,不要引起用户反感。

    对于价值评分是14的用户,其粘性不强但消费时间间隔较短,运营活动可以重点针对这部分用户,提高用户的产品使用频率,通过拼团打折、积分兑换等活动唤起用户注意力。

    4.找到用户对不同种类商品的偏好,制定针对不同商品的营销策略

    商品售卖主要依靠长尾商品的累积效应,而非爆款商品的带动。销量最高的商品在浏览数榜单上默默无闻,而浏览次数最高的商品甚至没有进入销量前20,说明这些吸引用户更多注意力的商品没有很好的转化为实际销量。

    针对浏览量高而销量不高的这部分商品,商家可以从以下几个方面提高销售额:
    ①诚信吸引用户,有的商家为吸引用户点击,在商品展示页投放的价格具有较强吸引力,而实际价格偏高,反而造成用户流失;
    ②从用户角度出发设计详情页信息流展示,便于用户获取信息;
    ③优化商品展示的形式,可以采用视频等更直观的展示方式;
    ④评论区评价管理,尤其对于差评区的用户反馈进行认真对待,分析自身劣势,并做出积极的回应和弥补。

    展开全文
  • 淘宝APP用户行为数据分析案例(附python代码及注释)

    千次阅读 多人点赞 2020-01-06 14:16:27
    淘宝APP用户行为数据分析案例 一.分析背景与目的 1.1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务。得益于算法技术的发展,淘宝APP给买方提供了搜索、推荐及广告等系统和...

    淘宝APP用户行为数据分析案例
    在这里插入图片描述
    一.分析背景与目的
    1.1背景与数据限制

    电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务。得益于算法技术的发展,淘宝APP给买方提供了搜索、推荐及广告等系统和功能,使用户能高效地触达感兴趣或有购买意愿的商品。上述系统和功能来源于海量的用户行为数据,而此后的数据变化又反馈到系统中,不断提升系统和功能的能效。此外,对于其他的如优惠活动,购物节,APP改版等运营行为,也能通过用户行为数据表现来衡量优劣。

    本案例使用的数据集有相当的限制:时间维度限制在9天内,商品数据经脱敏,行为数据只有4种。以下分析内容都在此数据集的限制范围内开展。

    1.2核心业务描述
    1.2.1核心功能

    淘宝作为商品交易平台,对于用户群体,核心功能为用户高效、优质的购物体验,并且尽可能让用户被动接触到有潜在购物意愿的商品。

    1.2.2用户侧核心指标

    根据淘宝APP的核心业务,用户侧的核心指标要能有效反映用户的量、粘性、使用频率和购买转化。

    1)流量类:
    访问数:pv,当日淘宝APP的页面访问数
    用户数:uv,当日在淘宝AAP产生数据的去重用户数
    活跃用户数:active_user,当日在淘宝APP上产生超过3次行为数据的用户数
    交易用户数:buy_user,当日在淘宝APP上产生购买行为数据的去重用户数

    2)比例与均值:
    活跃用户比例:日活跃用户/日uv
    交易用户比例:日交易用户数/日uv
    用户pv日均值:日pv/日uv
    9天内用户访问天数:统计9天内,用户有多少天活跃

    1.3 分析用户行为的目的
    1.3.1用户行为的定义

    用户在使用淘宝APP时发生的行为动作,包括以上数据集的四类,以及取消收藏/清空购物车/搜索/关注店铺等情况,由于数据局限性,在此仅分析数据集中的数据行为。

    1.3.2分析数据用户行为目的和意义
    1)分析指标和结果可用作监控日常业务;
    2)指标分析或进一步的下钻分析,挖掘业务增长点;
    3)数据可用作训练集,指标和结果可用作为检验推荐系统,搜索系统及广告系统性能的指标之一。
    备注:上述提到的挖掘增长点,围绕1.2.2的核心指标进行,即增加用户粘性,促进用户交易。

    1.4主要分析思路
    根据上述,,案例的分析应主要围绕三个目的和两个核心业务开展,如下图
    但由于数据集的限制,提升和检验方面也受到很大限制
    在这里插入图片描述

    二.数据集来源及理解

    2.1数据来源
    阿里天池官方数据集:User Behavior Data from Taobao for Recommendation

    2.2数据特征
    2.2.1总体描述
    数据时间范围:2017-11-25至2017-12-03
    文件类型:csv
    文件大小:0.9G
    数据表shape:1亿行,5字段

    2.2.1字段描述
    user_id:整数类型,序列化后的用户id
    item_id:整数类型,序列化后的商品ID
    category_id:整数类型,序列化后的商品所属类目ID
    behaviour_type:用户行为,分成四类:
    1)pv:商品详情页pv,等价于点击
    2)buy:商品购买
    3)fav:商品收藏
    4)cart:商品加入购物车
    timestamp:行为发生时的时间戳

    2.3理解数据
    1)数据集具有较大局限性:如时间短,无地域因素、商品id经脱敏等;
    2)比较有分析价值的是行为与时间这两个维度

    三.数据清洗
    由于笔记本电脑内存不够,将数据集分成10份后,用其中1份进行统计分析,将所有代码封装好后跑其余的数据再合并就可以了。

    3.1读取数据
    在这里插入图片描述
    3.2查看数据类型和缺失值
    在这里插入图片描述
    在这里插入图片描述
    3.3异常值处理:
    1)将timestamp转化成北京时间,并筛选出11月25日至11月3日的数据,被筛掉的数据约有5.5千条,只有总体数据的0.055%
    2)behaviour-type中没有异常值
    3.4数据清洗小结:
    淘宝官方给出的数据集很干净,只有极少部分数据时间字段有异常值。

    四.数据分析
    4.1关键指标分析
    4.1.1日均用户指标

    在这里插入图片描述
    4.1.2日均用户比例指标
    在这里插入图片描述
    4.1.3用户活跃天数分布
    在这里插入图片描述
    4.1.4关键指标小结分析

    1)APP的日均用户较为稳定,曲线从12月2日起大幅上升,较大可能的原因是双12系列活动开始,后续可单独分析这几天的各项转化率。
    2)日均活跃用户比例和日均购买用户比例相对稳定在79%和19%,推测可能是方差较小的正态分布,后续可手机长时间数据范围内的数据进行验证,用于假设检验业务是否出现异常。
    3)12月2至3日用户数上升了32.3%,但活跃比例和购买比例分别下降了3.2%和6.7%,(数据由后两天均值除以前7天均值得出),说明由于活动吸引而来的用户,购买比例并没有比平时的用户高,建议在引流时要更加精准。要说明这几天数据的好坏,还要等到整个活动结束后复盘分析。
    4)在9天的数据范围内,超过90%的用户9天内活跃超过两天,用户粘性高,后续可用周活跃天数比例来监控用户粘性的高低。
    5)上述指标均可作为平台业务监控指标,当指标数据异常时(异常好/异常坏),分析人员都应该深挖异常的产生原因,从而增长业务,或避免问题再次发生。

    4.2用户行为路径分析
    单纯的转化漏斗图在此场景下会过于简化,参考意义不大,数据的4个行为可组合成16个路径,可清晰地区分用户路径行为。

    4.2.1用户行为路径
    数据根据用户id、商品id和行为去重后赋值计算得出,因此数据会少了用户复购的情况,核实后复购9天范围内同用户同商品的复购订单数为5单,影响可忽略不计;详情见附录代码。
    在这里插入图片描述
    3条高占比的购买路径分析:
    a:unpv_unfav_uncart_buy: 50292
    此路径除了购买其他行为,应是数据集时间范围外产生的,此处不作讨论。
    b:pv_unfav_uncart_buy: 数量92426,占比:69%,uncart→buy的转化率为:1.4%
    购买路径中,占比最高的是访问后直接购买,无加入购物车行为,可以认为是单件购买。此路径的意义在于,得出用户购买占比最大的路径数据,后续可根据商品类型,用户标签,是否包邮等特征继续下钻分析,提高该类商品/营销策略/广告的数据表现。
    c:pv_unfav_cart_buy: 数量25351,占比19%,cart→buy的转化率为:9.9%;
    访问后加入购物车购买是另外一种较典型的购买路径,一般可能为多件购买或者提前加入购物车(后续数据验证)上述3条高占比路径,都是无收藏的商品,但我们不能说收藏了的商品购买转化率低,因为此处时间范围短,在4.3中将分析用户时间行为分析路径。此外,分析高占比购买路径的对立路径,如pv_unfav_uncart_buy与pv_unfav_uncart_unbuy对立,可以分析流失原因。

    4.2.2购买转化率
    在这里插入图片描述
    4.2.3小结
    1)总体转化比例:
    在这9天的数据中
    收藏fav行为的转化率为 3.82%
    加入购物车cart行为的转化率为 7.17%
    购买buy行为的转化率为2.51%

    2)不同路径的交易占比和购买转化率有较大差别,它们都代表用户行为的一种特征,通过比较路径转化率,比如有访问、收藏及加入购物车的路径的总体购买意愿大于只访问和收藏的路径,针对不同路径的用户及商品开展不一样的运营策略,逻辑上是可以提高业务效能的。此处的逻辑不是说让用户收藏和加购物车的商品越多越好,而是让用户接触到更多潜在消费商品越好。

    3)细致分解用户行为和路径,是开展进一步多特征分析的基础,也是开始解释数据差异的基础。基于淘宝APP的巨量数据,我们可以将数据分解到比较细的维度来分类、预测、检验算法和模型,进而实施高效的运营策略。

    4.3用户行为时间分析
    4.3.1用户活跃时间

    下图汇总了9天每个小时的pv,uv,和商品购买数量(乘5处理)
    在这里插入图片描述
    4.3.2购买行为时间分布
    在这里插入图片描述

    4.3.3小结
    1)从pv和和用户数的时间分布上看,19:00-24:00是访问高峰期,符合人们的工作休息节律,并应在此时间段开展日常运营活动。日用户数和购买时间曲线趋势基本吻合,但17-19时购买数量减少的幅度较大,后续应分解分析其原因。

    2)从购买行为时间分布图上看,收藏且有购物意愿的用户,超过95%会在3天内购买,加入购物车且有购物意愿的用户,超过92%会在5天内购买,可以在这些期限作适当的提示或活动,提高购买转化率。

    4.4用户行为商品分析:

    4.4.1 商品大类交易数占比

    数据集中商品大类经脱敏,因此筛选出的商品大类交易数没有进一步的分析。
    在这里插入图片描述

    4.4.2商品大类购买行为
    分析产生购买行为的数据中,一件商品的购买要经过多少个行为;由此可以分类商品大类的用户行为。
    在这里插入图片描述
    在这里插入图片描述
    分析小结:由上图可见,大部分购买行为平均只会产生20次以的,对于划分开的不同用户行为的商品大类,实施不同的运营策略

    区域1:购买数大,行为数也大,推测该区域商品是快消或高频物品,且品牌选择多,如服装、日用品、零食等,平台可根据区域1中商品大类的总体交易额、关注用户数及商品品类数等因素,为商品大类建设专区,减少用户的搜索对比,提升用户体验和沉浸度。

    区域2:购买数大,行为数少,推测该区域商品是高频、网红产品,品牌不多用户选择少,或者是有头部品牌,又或者是品牌建立了一定的依赖度;此类区域的商品,用户决策相对会轻松,因此应着重快速让用户触达商品,如用户搜索酱油,则应优先展示用户购买过的品牌。

    区域3:购买数相对小,行为数相对小,大部分商品大类都在这个区域,想让这些点往什么方向移动,还需具体类型具体分析。

    区域4:购买数小,行为数多,推测该区域商品低频/贵重,用户决策谨慎,如电视机,由于行为数多,同样可以考虑建设专区,可对相关用户增加靠谱的推送信息,增加用户的粘性及辅助用户合理决策。

    4.4.3 商品关联性分析

    提取数据集中各商品大类/商品出现在同一个订单中的次数,次数越大,两种商品大类/商品的关联性越高;用户在购买/加入购物车/收藏一种商品时,可适当推荐展示关联性高的商品。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    分析小结:
    1)总订单数为:178673,商品种类大于1的订单数为12165,商品大类关联性TOP1只有417次,约占3.4%;商品大类的关联性强于单个商品之间的关联性,从上表头看到,关联度最高的商品大类组合是3087458-3158249,其中在TOP3中,都有商品大类3158249;
    2)总体来说由购买行为计算的商品关联性不低,有一定的分类和推荐价值,按照关联性高的商品推荐,理论上可促成商品交易;后续可用同样的方法或其他复杂算法来研究pv/fav/cart等行为的商品关联性。

    五.总结

    5.1可用作业务监控/检验运营措施的指标

    由于淘宝APP用户基数大,骤降理论上很少出现,对于这些指标,更多可以考虑如比例3天连续下降,哪怕幅度很小。

    1)日均用户数、日均活跃用户数/比例、日均交易用户数/比例

    2)活跃天数分布

    3)各路径交易占比数/购买转化率

    4)pv值/用户数/购买数时间分布

    5)收藏-购买/加入购物车-购买行为时间分布

    6)商品大类购买次数-购买决策行为数

    7)商品大类关联性次数与订单数比例

    5.2业务增长建议

    5.2.1提升用户体验和粘性
    1)考虑为购买量大、决策过程长、品牌繁多的商品建立专区,并适当增加科普推送,辅助用户决策,提升沉浸度。

    2)对于决策过程很短的商品,应着重提升购买效率,如搜索结果有限显示/提示曾经买过的商品品牌或店铺、在购买过的订单中设置和突出搜索功能

    5.2.2促进用户交易
    1)基于用户购物行为,可以在收藏/加入购物车-购买完成90%的时间点上实施一定的优惠信息/提醒等运营措施,促进用户交易。

    2)双12活动带来的用户增长,并没有维持到日常水平的购买转化率,建议调整或ABTEST用户需求/定向模型,提升购买转化率

    3)对于关联性高的商品,优先向相关用户展示。

    5.3后续的分析方向
    由于数据集的局限性,案例分析更多在于发现用户、规律以及建立指标。后续的分析方向应把数据分解得更深入,考虑更多维度,长追踪时间,如:

    1)利用上述指标监控业务,追踪运营措施效果,挖掘数据异常的原因;

    2)多维度的排列组合分析,如不同购买路径的人群的购买决策特征,多维度构建人物画像等;

    3)建立数据指标BI体系,高效地供内部各人员参考。

    附录:代码及注释(计算部分)
    
    import pandas as pd
    import numpy as np
    import datetime
    import plotly.graph_objects as go
    from plotly.subplots import make_subplots
    import plotly.offline as py
    
    #三.数据清洗
    #数据清洗-读取数据
    row_data = pd.read_csv(r'D:\kaggle资料\天池-淘宝用户行为数据\UserBehavior.csv',names=['user_id','item_id','category_id','behaviour_type','timestamp'],iterator=True)
    data1=row_data.get_chunk(10000000)
    
    #数据清洗-数据描述
    print('UV:',data1['user_id'].nunique())
    print('商品SKU:',data1['item_id'].nunique())
    print('商品大类:',data1['category_id'].nunique())
    print('---------')
    print('数据类型:','\n',data1.dtypes)
    
    #数据清洗-查看缺失值
    a = data1.isnull().sum()
    if a.sum() == 0:
        print('数据集无缺失值')
    else:
        print(a[a > 0])
    
    #数据清洗-异常值
    #用户行为异常值
    if data1['behaviour_type'].nunique() == 4:
        print('行为数据无缺失值')
    else:
        print('数据行为存在缺失值,检查')
        
    #时间异常值
    #将时间戳转化为北京时间、筛选要分析的时间范围
    data1=data1.assign(time = pd.to_datetime(data1['timestamp'],unit='s')+datetime.timedelta(hours=8))
    data1 = data1[(data1['time']>'2017-11-25') &(data1['time']<'2017-12-4')]
    print('时间筛选过后的表结构:',data1.shape)
    
    
    #四.数据分析
    
    #4.1用户侧核心指标
    #这部分主要用到日期,所以从time中提取date,这里使用map+匿名函数
    data1 = data1.assign(date = data1['time'].map(lambda x:x.strftime('%Y-%m-%d')))
    
    #日均用户数
    df_uvpd = data1[['user_id','date']].groupby('date').nunique()
    df_uvpd = df_uvpd.drop(columns='date')
    df_uvpd = df_uvpd.rename(columns={"user_id": "uv"})
    
    #日均活跃用户数
    df_aupd = data1[['user_id','behaviour_type','date']].groupby(['date','user_id']).count()
    df_aupd = df_aupd[df_aupd['behaviour_type']>2]
    df_aupd = df_aupd.count(level = 0)
    df_aupd.rename(columns={'behaviour_type':'active_user'},inplace =True)
    
    #计算日均交易用户数
    df_bupd = data1[data1['behaviour_type'] == 'buy']
    df_bupd = df_bupd[['user_id','behaviour_type','date']].groupby(['date','user_id']).count()
    df_bupd = df_bupd.count(level = 0)
    df_bupd.rename(columns={'behaviour_type':'buy_user'},inplace =True)
    
    #每日pv数:
    df_pvpd = data1[['date','user_id']].groupby('date').count()
    df_pvpd = df_pvpd.rename(columns = {'user_id':'pv'})
    
    #将上述各表连接后生成指标表格,用assign函数可以避免copywarning
    df41 = df_pvpd.join(df_uvpd).join(df_aupd).join(df_bupd)
    df41 = df41.assign(pv_per_user = df41['pv']/df41['uv'],
                       active_user_rate = df41['active_user']/df41['uv'],
                       buy_user_rate = df41['buy_user']/df41['uv'])
    
    #4.1.3用户活跃天数分布
    df_user_active_days = data1[['user_id','behaviour_type','date']].groupby(['date','user_id']).count()
    df_user_active_days = df_user_active_days[df_user_active_days['behaviour_type']>2]
    df_user_active_days = df_user_active_days.count(level = 1)
    df_user_active_days = df_user_active_days.rename(columns = {'behaviour_type':'days'})
    
    #4.2用户行为路径分析
    #为区分各用户行为及其组合,为行为数据赋值:1,2,4,8,排列组合后为0-15
    df1 = data1.drop_duplicates(['user_id','item_id','behaviour_type'])
    df1 = df1.assign(type_num=df1['behaviour_type'].map({'pv':1,'fav':2,'cart':4,'buy':8}))
    
    #聚合求和,每一个路径都有不同的值
    df1_gb = df1[['user_id','item_id','type_num']].groupby(['user_id','item_id']).sum()
    
    #划分各路径dataframe:buy
    unpv_unfav_uncart_buy = df1_gb[df1_gb['type_num'] == 8]
    pv_unfav_uncart_buy = df1_gb[df1_gb['type_num'] == 9]
    unpv_fav_uncart_buy = df1_gb[df1_gb['type_num'] == 10]
    pv_fav_uncart_buy = df1_gb[df1_gb['type_num'] == 11]
    unpv_unfav_cart_buy = df1_gb[df1_gb['type_num'] == 12]
    pv_unfav_cart_buy = df1_gb[df1_gb['type_num'] == 13]
    unpv_fav_cart_buy = df1_gb[df1_gb['type_num'] == 14]
    pv_fav_cart_buy = df1_gb[df1_gb['type_num'] == 15]
    
    print('unpv_unfav_uncart_buy:',unpv_unfav_uncart_buy.shape[0],'  ;pv_unfav_uncart_buy:',pv_unfav_uncart_buy.shape[0])
    print('unpv_fav_uncart_buy:',unpv_fav_uncart_buy.shape[0],'  ;pv_fav_uncart_buy:',pv_fav_uncart_buy.shape[0])
    print('unpv_unfav_cart_buy:',unpv_unfav_cart_buy.shape[0],'  ;pv_unfav_cart_buy:',pv_unfav_cart_buy.shape[0])
    print('unpv_fav_cart_buy:',unpv_fav_cart_buy.shape[0],'  ;pv_fav_cart_buy:',pv_fav_cart_buy.shape[0])
    print('--------------')
    
    #划分各路径dataframe:unbuy
    unpv_unfav_uncart_unbuy = df1_gb[df1_gb['type_num'] == 0]
    pv_unfav_uncart_unbuy = df1_gb[df1_gb['type_num'] == 1]
    unpv_fav_uncart_unbuy = df1_gb[df1_gb['type_num'] == 2]
    pv_fav_uncart_unbuy = df1_gb[df1_gb['type_num'] == 3]
    unpv_unfav_cart_unbuy = df1_gb[df1_gb['type_num'] == 4]
    pv_unfav_cart_unbuy = df1_gb[df1_gb['type_num'] == 5]
    unpv_fav_cart_unbuy = df1_gb[df1_gb['type_num'] == 6]
    pv_fav_cart_unbuy = df1_gb[df1_gb['type_num'] == 7]
    
    print('unpv_unfav_uncart_unbuy:',unpv_unfav_uncart_unbuy.shape[0],'  ;pv_unfav_uncart_unbuy:',pv_unfav_uncart_unbuy.shape[0])
    print('unpv_fav_uncart_unbuy:',unpv_fav_uncart_unbuy.shape[0],'  ;pv_fav_uncart_unbuy:',pv_fav_uncart_unbuy.shape[0])
    print('unpv_unfav_cart_unbuy:',unpv_unfav_cart_unbuy.shape[0],'  ;pv_unfav_cart_unbuy:',pv_unfav_cart_unbuy.shape[0])
    print('unpv_fav_cart_unbuy:',unpv_fav_cart_unbuy.shape[0],'  ;pv_fav_cart_unbuy:',pv_fav_cart_unbuy.shape[0])
    
    #4.3用户行为时间分析
    #4.3.1用户活跃时间分布,划分成24小时,求9天的总和
    df43 = data1
    df43['hour'] = df43['time'].dt.hour
    
    #pv数
    df431_pv = df43[['hour','user_id']].groupby('hour').count()
    df431_pv.rename(columns={'user_id':'访问数'},inplace =True)
    
    #uv数
    df431_uv = df43[['hour','user_id']].groupby('hour').nunique()
    df431_uv.rename(columns={'user_id':'用户数'},inplace =True)
    
    #购买数
    df431_buy = df43[df43['behaviour_type'] == 'buy']
    df431_buy = df431_buy[['hour','user_id']].groupby('hour').count()
    df431_buy.rename(columns={'user_id':'购买数'},inplace =True)
    
    #4.3.2购买行为时间分布
    #求fav/cart与buy行为的交集
    data1_buy = data1[data1['behaviour_type'] == 'buy']
    data1_fav = data1[data1['behaviour_type'] == 'fav']
    data1_cart = data1[data1['behaviour_type'] == 'cart']  
    df432_fav_buy = pd.merge(data1_buy,data1_fav,on = ['user_id','item_id'],how = 'inner')
    df432_cart_buy = pd.merge(data1_buy,data1_cart,on = ['user_id','item_id'],how = 'inner')
    
    #fav-buy行为时间分布
    df432_fav_buy = df432_fav_buy.assign(dtime = (df432_fav_buy['time_x'] - df432_fav_buy['time_y']))
    
    #这里datetime时间类型相减后是deltatime类型,转化为hour要自己计算,下面同理
    df432_fav_buy['dtime'] = df432_fav_buy['dtime'].map(lambda x : x.days * 24 + x.seconds/3600)
    df432_fav_buy = df432_fav_buy[df432_fav_buy['dtime'] > 0]
    
    #cart-buy行为时间分布
    df432_cart_buy = df432_cart_buy.assign(dtime = (df432_cart_buy['time_x'] - df432_cart_buy['time_y']))
    df432_cart_buy['dtime'] = df432_cart_buy['dtime'].map(lambda x : x.days * 24 + x.seconds/3600)
    df432_cart_buy = df432_cart_buy[df432_cart_buy['dtime'] > 0]
    
    #4.4商品分类分析
    #4.4.1 商品大类交易数
    data1_buy = data1[data1['behaviour_type'] == 'buy']
    
    #聚合计数每商品大类的交易数
    data1_buy_category = data1_buy[['category_id','behaviour_type']].groupby('category_id').count()
    data1_buy_category = data1_buy_category.rename(columns = {'behaviour_type':'buy_count'})
    
    #排序
    data1_buy_category = data1_buy_category.sort_values('buy_count',ascending=False)
    data1_buy_category = data1_buy_category.reset_index()
    
    data1_buy_category.head()
    
    #4.4.2商品大类购买行为
    #有购买行为的商品大类与原始数据连接,可得到以用户id及商品大类id为键的包含其他行为数据的dataframe,并聚合计数其行为数据
    data1_behav_category = pd.merge(data1_buy[['user_id','category_id']],data1,on = ['user_id','category_id'],how = 'left')
    data1_behav_category = data1_behav_category[['category_id','behaviour_type']].groupby('category_id').count()
    data1_behav_category = data1_behav_category.rename(columns = {'behaviour_type':'behav_count'})
    data1_behav_category = data1_behav_category.reset_index()
    
    #只分析最终有购买的用户行为,与上一步商品大类交易数占比中的dataframe连接,计算比值
    df_cate_buy_behav = pd.merge(data1_buy_category,data1_behav_category,on = 'category_id',how='inner')
    df_cate_buy_behav = df_cate_buy_behav.assign(behav_per_buy = df_cate_buy_behav['behav_count']/df_cate_buy_behav['buy_count'])
    
    #4.4.3 商品关联性分析
    #计算总订单数
    df_oneorder_buycount = data1_buy.groupby(['user_id','timestamp']).count()
    print('总订单数:',df_oneorder_buycount.shape[0])
    
    #筛选出商品id多于一个的订单数
    df_oneorder_buycount = df_oneorder_buycount[df_oneorder_buycount['item_id'] > 1]
    df_oneorder_buycount = df_oneorder_buycount.reset_index()
    df_oneorder_buycount = df_oneorder_buycount[['user_id','timestamp','item_id']]
    df_oneorder_buycount = df_oneorder_buycount.rename(columns = {'item_id':'num_in_one_order'})
    print('商品id多于一个的订单数:',df_oneorder_buycount.shape[0])
    df_oneorder_buycount.head()
    
    #表连接补充表-'商品id多于一个的订单数'的数据内容
    df_buy_multi = pd.merge(df_oneorder_buycount,data1_buy,on=['user_id','timestamp'],how='inner')
    df_buy_multi.head()
    
    #计算商品大类相关性
    #上表中同一订单中的不同category_id都显示出来了,通过自连接实现组合
    rel_a = df_buy_multi
    rel_b = df_buy_multi[['user_id','timestamp','category_id']]
    rel = pd.merge(rel_a,rel_b,on=['user_id','timestamp'],how = 'left')
    rel = rel[rel['category_id_x'] < rel['category_id_y']]#去除连接相同大类的数据
    
    #组合好并去重后,聚合就可以计数两两商品大类的出现次数,在这里简单认为次数越多,相关性越高
    rel_count = rel[['category_id_x','category_id_y','user_id']].groupby(['category_id_x','category_id_y']).count()
    rel_count = rel_count.rename(columns={'user_id':'出现次数'})
    rel_count = rel_count.sort_values('出现次数',ascending = False)
    rel_count = rel_count.reset_index()
    
    #计算商品相关性
    #代码同上一项一样,将category_id换成item_id就可以了
    rel_a = df_buy_multi
    rel_b = df_buy_multi[['user_id','timestamp','item_id']]
    rel = pd.merge(rel_a,rel_b,on=['user_id','timestamp'],how = 'left')
    rel = rel[rel['item_id_x'] <= rel['item_id_y']]#去连接重复的
    
    rel_count = rel[['item_id_x','item_id_y','user_id']].groupby(['item_id_x','item_id_y']).count()
    rel_count = rel_count.rename(columns={'user_id':'出现次数'})
    rel_count = rel_count.sort_values('出现次数',ascending = False)
    rel_count = rel_count.reset_index()
    画图代码(部分)
    
    #画图-4.1.1日均用户指标
    
    fig = go.Figure()
    
    fig.add_trace(
        go.Scatter(x=df41.index, y=df41['uv'], name="日均用户",line_color ="#1f77b4")
    )
    fig.add_trace(
        go.Scatter(x=df41.index, y=df41['active_user'], name="日均活跃用户",
        line_color = "#ff7f0e")
    )
    fig.add_trace(
        go.Scatter(x=df41.index, y=df41['buy_user'], name="日均交易用户",
        line_color = "#d62728")
    )
    
    fig.update_layout(
        title_text="日均用户指标",
        width=800)
    
    fig.update_xaxes(title_text="日期",dtick='d')
    
    fig.show()
    
    
    #画图-4.1.3用户活跃天数分布
    fig = go.Figure()
    fig.add_trace(go.Histogram(x=df_user_active_days['days'], 
                               histnorm='percent',
                               name = '活跃天数分布图(9天内)',
                               xbins=dict(
                               size= 0.5),
                               marker_color= 'rgb(49,130,189)'
                              )     
                 )
    fig.update_xaxes(dtick=1)
        
    fig.update_layout(height=450, width=800, title_text='活跃天数分布图(9天内)')
    fig.show()
    
    
    #画图-4.3.1用户活跃时间分布
    fig = make_subplots(specs=[[{"secondary_y": True}]])
    
    fig.add_trace(go.Bar(
        x=df431_pv.index,
        y=df431_pv['访问数'],
        name='日pv时间分布',
        marker_color = 'rgb(115,115,115)')
    )
    fig.add_trace(go.Scatter(
        x=df431_pv.index,
        y=df431_uv['用户数'],
        name = '日用户数时间分布', 
        connectgaps=True,
        line_color = 'rgb(49,130,189)'),
        secondary_y = True
    )
    fig.add_trace(go.Scatter(
        x=df431_pv.index,
        y=df431_buy['购买数'] * 5,
        name = '日购买数时间分布', 
        connectgaps=True,
        line_color = 'rgb(180,60,60)'),
        secondary_y = True
    )
    fig.update_layout(
        yaxis2=dict(
            tickfont=dict(
                color='rgb(49,130,189)'))
    )
    fig.update_layout(title_text="用户行为时间分布(日)")
    fig.show()
    
    展开全文
  • 基于Python的淘宝用户行为数据分析

    千次阅读 2020-07-16 15:28:25
    来源于阿里天池,是阿里巴巴提供的移动端淘宝用户行为数据集,包含2014-11-18至2014-12-18共计一千两百多万条数据 特征 说明 user_id 用户名(脱敏) item_id 商品名(脱敏) behavior_type 行为(点击,...

    数据:

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

    来源于阿里天池,是阿里巴巴提供的移动端淘宝用户行为数据集,包含2014-11-18至2014-12-18共计一千两百多万条数据

    特征说明
    user_id用户名(脱敏)
    item_id商品名(脱敏)
    behavior_type行为(点击,收藏,加入购物车,购买)对应1,2,3,4
    user_geohash地理位置(大量缺失)
    item_category商品类别
    time行为发生时间

    分析流程:

    淘宝用户行为分析
    流量分析
    行为分析
    消费分析
    漏斗模型
    RFM模型

    分析结果及运营建议:

    一.PV,UV都呈现周期性的变化,双12波动最大

    二. 平常,每到周五页面的流量变会出现波谷,此处下降原因应深入分析

    三.漏斗分析
    结论1:浏览到购买这一步转化率很低

    猜想: 是因为用户找不到自己心意的物品.
    建议:
    1.对用户浏览到收藏行为埋点数据进一步分析,寻找哪个渠道的流失率过高
    2.千人千面,应该对用户模型更加细分,达到更精准的商品推荐

    结论2: 购物车到购买这一步的转化率与平日比较是否正常,若确出了问题
    猜想: 是什么导致用户放弃付费?
    正常情况: 出现了更符合心意或性价比更高的物品
    不正常: 是否是支付时出了问题,比如双12系统较卡,或者用户忘记密码而无其他方式进行支付

    建议:
    对用户购物车到购买行为进行埋点,寻找哪个渠道的问题,及时进行优化

    四:50%到75%箱重比例最大,大多数用户都处于7到17次这个消费次数

    五:复购率为87%,说明产品已经较稳定,推测产品处于AARRR模型的Revenue阶段,应该稳定的向Refer阶段过渡,现在Refer阶段做的最好的是拼多多的参团砍价

    六:
    重要价值客户:予以关注并维护,如:定期举办促销产品活动
    重要潜力用户:予以相应的价格刺激,如:折扣或捆绑销售
    重要唤回用户:提高忠诚度和粘性,建立产品与客户之间的信任
    流失客户:分析流失原因,建立流失预警模型

    1.数据预处理:

    导入所需的包,并对数据进行初步观察
    在这里插入图片描述

    地理位置缺失太多,我们可以将此特征除去
    对时间进行格式转换

    在这里插入图片描述
    对特征值进行重命名
    在这里插入图片描述

    2.流量分析:

    2.1 时间维度对PV,UV分别进行分析
    对PV,UV进行日拆解,并可视化展示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    结论:

    1. PV,UV都呈现周期性的变化,双12波动最大
    2. 平常,每到周五页面的流量变会出现波谷,此处下降原因应深入分析

    2.2 对PV,UV进行小时拆解,并可视化展示

    在这里插入图片描述在这里插入图片描述

    结论:数据呈现正常,20~22点是用户访问的高峰

    3.用户行为分析

    3.1
    在这里插入图片描述
    在这里插入图片描述
    结论:可以看出点击到点击到收藏这一步有很大的落差,这部分转化率较低

    3.2以日维度分析行为的变化
    在这里插入图片描述

    3.3以小时维度拆解行为
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.4 行为转化漏斗模型
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    结论1:浏览到购买这一步转化率很低

    猜想:是因为用户找不到自己心意的物品.

    建议:
    1.对用户浏览到收藏行为埋点数据进一步分析,寻找哪个渠道的流失率过高
    2.千人千面,应该对用户模型更加细分,达到更精准的商品推荐

    结论2:购物车到购买这一步的转化率与平日比较是否正常,若确出了问题

    猜想:是什么导致用户放弃付费?
    正常情况:出现了更符合心意或性价比更高的物品
    不正常:是否是支付时出了问题,比如双12系统较卡,或者用户忘记密码而无其他方式进行支付

    建议:
    对用户购物车到购买行为进行埋点,寻找哪个渠道的问题,及时进行优化

    4.用户消费分析

    4.1消费次数维度
    在这里插入图片描述
    50%到75%箱重比例最大,大多数用户都处于7到17次这个消费次数

    4.2 日ARPPU-产品的盈利能力
    ARPPU=总收入/消费用户数量
    总收入用消费次数代替
    在这里插入图片描述
    在这里插入图片描述
    每日的用户消费在2次左右,双12消费次数大幅增长

    4.2 日ARPU
    ARPU=总收入/用户数量
    总收入用消费次数代替
    在这里插入图片描述
    在这里插入图片描述
    日ARPU在0.5附近波动,在11-21日波动较大
    4.2 日付费率
    付费率=消费人数/用户人数
    在这里插入图片描述
    4.2 复购率
    复购率=复购行为用户数/消费行为用户总数
    在这里插入图片描述
    复购率为87%,说明产品已经较稳定,推测产品处于AARRR模型的Revenue阶段,应该稳定的向Refer阶段过渡,现在Refer阶段做的最好的是拼多多的参团砍价
    4.3建立RFM模型
    因为没有M(消费金额)列,因此只能通过R(最近一次购买时间)和F(消费频率)的数据对客户进行打分

    RFMValue
    R1~6
    F1~6
    M

    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    划分打分维度,并对用户进行价值排序
    在这里插入图片描述
    在这里插入图片描述
    重要价值客户:予以关注并维护,如:定期举办促销产品活动
    重要潜力用户:予以相应的价格刺激,如:折扣或捆绑销售
    重要唤回用户:提高忠诚度和粘性,建立产品与客户之间的信任
    流失客户:分析流失原因,建立流失预警模型

    展开全文
  • 用户行为数据分析——数据埋点篇

    千次阅读 2020-04-09 16:25:28
    用户行为数据分析——数据埋点篇 在用户行为数据分析当中,我们常用的采集数据方式有两种,一种是埋点数据,另一种是无埋点技术,我们今天主要来分析一下埋点技术与无埋点技术的优劣势,他们的之间的特点及其使用...
  • 国内的网站分析行业,始终(这么说应该不过分)是模仿的美国,直到今天几乎仍然如此。但这一领域随着数据对数字营销渗透程度的加深,忽然变得极为重要。一方面,数字营销可第三方监测的部分非常有限,而网站分...
  • 数据分析的基础模型涵盖方差分析、因子分析、回归分析、主成分分析、聚类分析、逻辑回归、用户细分等等,游戏运营的数据分析通常依据AARRR海盗法则相对精简,业内专注对留存、付费及活跃的几个常用数据的分析。...
  • 用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为数据分析+项目计划书用户行为...
  • 淘宝关于用户行为数据分析

    万次阅读 多人点赞 2019-08-30 01:12:33
    数据来源于:... 用户在网上购物会产生了一系列的行为,个人的一次行为用户个人来说仅仅是一次简单的操作,但他所代表的是一大类人群对商品的一类交互行为。我们通过追踪...
  • 数据分析实战项目:SQL分析淘宝用户行为

    千次阅读 多人点赞 2020-04-28 00:20:16
    文章目录一、项目背景及目的1.1 项目背景1.2 项目目的1.3 数据集来源与介绍二、...数据分析4.1 基于用户行为转化漏斗模型分析用户行为4.1.1 常见电商指标分析4.1.1.1 UV、PV、UV/PV4.1.1.2 复购率4.1.1.3 跳失率4.1...
  • 数据分析用户行为分析

    万次阅读 2018-04-17 19:57:58
    电商网站用户购物路径如下:    用户行为分析定义:对用户购物路径日志信息进行统计... 用户行为分析目的:通过对用户行为监测获得的数据进行分析,可以让企业更加详细、清楚地了解用户的行为习惯,从而找出网...
  • 而通常所说的用户行为分析,则指的是利用大数据分析方法,通过对用户线上行为数据、用户属性数据的收集,存储,分析,以找到相关规律,然后通过A/B测试等方式,探究有效方案的方式。在大数据分析技术发展成熟之前,...
  • 数据分析-淘宝用户行为分析

    千次阅读 2019-10-02 12:04:43
    userId=1,通过此项目学习电商数据分析的指标与数据分析的基本方法。 二、分析维度 根据现有数据及分析目的,从四个维度进行分析: 第一个维度:用户购物情况整体分析 以PV、UV、平均访问量、跳失率等指标,分析...
  • python基于淘宝历史数据用户行为分析

    千次阅读 多人点赞 2020-03-25 22:53:58
      1、项目背景与分析说明    1)项目背景    2)数据和字段说明    3)分析的维度    4)电商常用分析方法    5)什么是漏斗分析?   2、导入相关库   3、数据预览、数据预处理    1)计算...
  • 淘宝APP用户行为分析

    千次阅读 2019-07-01 14:12:44
    淘宝APP的功能日益复杂,但都离不开最基本的收藏、购物车和购买功能,本文利用sql对淘宝用户行为数据进行分析,通过用户行为分析业务问题。 一. 提出问题 本次分析的目的是想通过对淘宝用户...
  • 电商用户购买行为数据分析

    千次阅读 多人点赞 2019-10-09 11:35:24
    本文使用SQL和SPSS工具,对超过100万条数据通过分组聚合、联结查询等方式进行清洗,针对用户购买数据从产品销售指标、用户价值指标进行分析,对数据进行可视化,利用RFM模型进行用户细分并提出具有针对性的业务策略...
  • 利用python进行用户行为分析

    千次阅读 多人点赞 2020-04-22 12:19:34
    用户行为分析 ...用户消费行为分析通过漏斗模型进行用户行为分析RFM模型分析用户价值理解数据数据清洗缺失值处理统计缺失值日期时间数据处理更改数据类型异常值处理数据分析总量pv、uv分析日访问...
  • 用户行为分析系统

    万次阅读 热门讨论 2017-12-28 17:29:57
    刚刚做完提交代码,等待测试的反馈,怀着激动的心情,先看看效果,代码过段时间会放到github上。...数据处理:hadoop 单机模式 简单介绍首页为总览,统计所有的信息,包括总数、排名、百分比,开门见山,吸引读者:第二
  • 推荐系统2—用户行为数据分析

    千次阅读 2018-05-21 18:17:29
    基于用户行为分析的推荐算法是个性化推荐系统的重要算法,学术界一般将这种...用户行为数据简介 用户行为数据在网站上最简单的存在形式就是日志。网站在运行过程中都产生大量原始日志(raw log),并将其存储在文...
  • 使用Python对淘宝用户行为进行数据分析

    千次阅读 热门讨论 2020-04-30 16:07:12
    目录1 分析背景与意义2 分析思路3 分析内容3.1 提出问题3.2 理解数据3.3 数据...背景:本次报告随机采集了在2017年11月25日至2017年12月3日之间,淘宝用户行为,其中行为包括浏览、加购物车、收藏、购买等。数据...
  • 数据分析之实战项目——电商用户行为分析

    万次阅读 多人点赞 2020-06-07 17:40:09
    电商用户行为分析 分析背景和目的 随着互联网和电商的发展,人们习惯于网上购物。在国内,电商平台深受欢迎,每年的双11,双12活动,大量的用户在淘宝平台浏览商品,或收藏或加入购物车或直接购买。通过对用户的行为...
  • 实战|淘宝用户行为分析案例

    千次阅读 2020-03-03 20:57:45
    一、项目背景本数据报告以淘宝app平台为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括:日PV和日UV分析,付费率分析,复购行为分析,漏斗流失分析...
  • 几种常用用户行为分析模型简述

    千次阅读 2020-04-26 20:00:57
    一、常见用户行为分析模型 在数据分析的大框架下,通过对用户行为监测获得的数据进行分析研究的行为归结于用户行为分析。用户行为分析可以让产品更加详细、清楚地了解用户的行为习惯,从而找...
  • 淘宝用户行为数据

    2019-01-05 15:34:43
    3182257条数据,可做推荐系统,数据分析 它包含字段(id, uid,age,gender,item_id, behavior_type, item_category, date, province) //1.浏览、2.收藏、3.加购物车 4.购买 7.统计各省的前十热门关注产品(浏览+收藏...
  • 1 用户行为分析

    千次阅读 2019-02-26 10:57:31
    常见问题 项目会涉及到哪些技术? Nginx HDFS Flume MapReduce Scala Spark 可视化展示 需要会哪些编程语言? 具备Java基本知识 ...用户行为分析需要分析哪些内容? 你是谁? 你从哪里来 免费流...
  • 用户消费行为的分析报告 数据来源 CDNow 网站的用户购买明细,通过各个指标对用户行为进行分析,可以更清楚了解用户行为...本数据集共有 6 万条左右数据,数据为 CDNow 网站 1997年1月至1998年6月的用户行为数据,共...
  • 爬虫随机从CSDN博客取得800条用户行为数据,包含用户名、原创博客数、评论数、浏览量,试着从博客数,评论数,浏览量三个方面分析csdn的博主们的形象。 原创博客数 博主们的原创博客数并不是很多,50篇以下的占了70%...
  • 基于Spark的用户行为分析系统

    千次阅读 2020-06-20 13:44:31
    用统计分析出来的数据辅助公司中的PM(产品经理)、数据分析师以及管理人员分析现有产品的情况,并根据用户行为分析结果持续改进产品的设计,以及调整公司的战略和业务。最终达到用大数据技术来帮助提升公司的业绩、...
  • 数据分析实战之淘宝用户行为分析(2) -用户行为数据分析 数据分析实战之淘宝用户行为分析(1) -数据清洗 1.目的 本项目基于阿里天池提供的数据,通过挖掘用户行为,分析用户行为的规律与特点,进而实现购买转化...
  • 数据分析入门小白,见笑!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 387,746
精华内容 155,098
关键字:

用户行为数据分析