本文则针对性地讲讲数据分析整个流程最关键的阶段: 数据处理与分析阶段。该阶段我分成了三块:数据采集、数据处理、数据分析。
因为数据采集、处理、分析都围绕着“数据”进行,对海量或杂乱数据进行处理分析,从中找出痛点,洞察问题。
数据采集该处的数据采集指的是获取分析所需要的数据,一般可以从内部数据、外部数据两个方向获取。
1. 内部数据
- 直接获取
直接获取的前提是,公司进行了数据仓库的建设,已为决策分析提供了所有类型数据支持。该部分内容在之前的文章中也提到过,但是在这里更加细化的做了点补充。
直接获取就是指数据库中有现成的表可以直接获取到所需的数据,不需要分析师再在sql上做复杂的处理。
公司一般会将数据分为ods、dwd、dwb/dws层数据。
① ods层:明细数据。数仓不做任何数据处理,直接原封不动的将数据同步到该库上。为dw层的数据加工作准备。
②dwd层:明细数据。该层数据已在ods层上对数据做了清洗操作,比如去除空值、脏数据等。
③dwb/dws层:聚合数据。主要对ods/dwd层的数据做些轻度汇总,会涉及较多业务指标数据。如根据ods/dwd层的明细数据计算出七日复购率、周同期对比数据、毛利率等指标供分析师直接查询使用。
一般情况下,分析可以直接从dwb/dws层调取现成的指标数据进行分析,特殊情况下也可以从dwd层写复杂sql的方式计算成所需的数据。
- 重新落表获取
前提是dwb/dws层没有现成的数据可以直接获取,哪怕自己写代码可以从dwd层获取,也需要写很复杂的代码。此时,请数仓协助落成聚合表再去调取数据。
重新落表一般会涉及人力资源的协调,需求的沟通。分析师担当业务方和数仓之间的桥梁,将业务方的需求理清楚之后,自身又作为数仓的需求方对数仓提需求。
2. 外部数据
当分析的内容内部数据无法满足时,或者不够全面时,此时需要借助于外部数据来辅助分析。
- 行业报告数据
比如艾瑞网、极光大数据、阿里研究所、199IT互联网数据中心等都会时不时的发一些行业分析报告。整个行业的数据公司内部是无法获取的,所以可以从一些行业分析报告入手。
- 问卷采集
比如我们需要获取用户的一些①主观想法:喜欢我们产品的原因是?我们产品最吸引您的点是?您觉得我们产品最应该改进的点是?②对竞品的行为:您在xx场景下更愿意使用A产品、B产品还是C产品③用户习惯的场景:您在什么场景下更愿意使用xx产品?等
通过问卷数据获取一些产品中无法获得的数据,辅助分析。
- 宏观数据
有时候我们分析的某个指标有时候也会受到宏观政策的影响,比如宏观上某项指标上调了xx,对我们的业务会产生怎样的影响。
数据处理对分析师而言,这步需要分析师将数据根据脑中的分析框架处理成所需要的数据。
1. 处理内容
会涉及数据异常值处理、缺失值处理、数据转换、数据聚合、数据分组归类以及数据准确性的校验,为下一步的数据分析奠定好基础。
井井有条的数据更有利于分析:
- 剔除无效数据,比如异常值、缺失值、重复值等。
- 考虑清楚数据聚合的维度,比如时间上、地域上、用户上、商品上等按照什么维度聚合。
- 做好数据聚合的处理,比如需要借助开窗函数,是否需要去重计数,是否需要累积计数等;
2. 数据验证
数据采集到之后,还要做好数据验证,目的是确保数据准确性,切忌拿到数据立马动手分析。
从验证人员来看:
- 自身多方验证。
- 初始先自身验证一番,与现有报表中已有数据进行对比,观察是否一致。
- 与需求方协同验证。
- 数据调取之后先出一份数据表,提供给需求方共同验证。不过分析师接了需求,保证数据准确性是基本要素,一般情况下需求方并不会协同验证。前提是,无现有数据可供对比查验,可将数据先提供给需求方过一眼,确保数据准确无误。
从验证方式来看:
- 定性验证
- 通过经验或逻辑推理,主观判断该数据是否符合经验或正常逻辑,比如你取到的某个商品的gmv比整个品类的gmv还要大,就不符合正常逻辑,肯定有误。
- 定量验证
- 依据统计方式,计算出具体的指标,多方交叉验证。
数据分析方法很多,网上有很多资料,这里就讲一下其中比较常用的几种分析方法。
1. 漏斗分析
漏斗分析是数据分析中比较常见的分析模型。采取漏斗的方式直观的表示业务从起点到终点的各个环节的转化情况,以便找出有问题的环节,针对性的优化。
如下图,展示了用户支付场景的转化率:用户从打开app到完成支付的过程。分为进入首页→进入商详页→加入购物车→提交订单→支付完成,直观分析每个重要环节的转化率。以最直观最简单的方式反映出每个关键环节的转化率,洞察主要问题所在。
2. RFM模型
RFM模型主要用来衡量用户价值,做用户分群,比如区分出低价值用户、高价值用户、忠诚用户等用户群体。
R:用户最近一次消费距今时间(Recency)
F:用户在最近时间段内的消费频次(Frequency)
M:用户在最近时间段内的消费金额(Monetary)
这里用一个比较简单的例子讲下:
先对R、F、M三个值进行分层并赋予权重(以下数据纯属虚构,分层时根据实际情况)。
比如用户最近一次消费距今时间7天以下的打为5分,8-14天的打为4分......以此类推。分数高的表示价值性比较高,分数低的表示价值性比较低。
然后调取出每个用户R、F、M值,填入“按照均值处理前”列中。
比如下图中,用户“111113”最近一次消费距今时间在7天以下,则R为5,在最近时间段内的消费频次在6-10之间,则F为2,在最近时间段内的消费金额在1001-2000之间,则M为2。
再将每个用户的R、F、M值与均值对比,大于均值填充1,小于均值填充0,填充于”按照均值处理后“列中。
最后将“按照均值处理后”的数据参照下图模型表(下图不是计算出来的,是比较常用的标准),匹配出用户类型。