Skip to content

04如何挑选适合项目场景的数据分析工具?

今天我讲一下各种数据分析工具的使用场景对比。

本节课内容分为四大部分:

  • 数据分析整体流程;

  • Excel 常用操作;

  • SQL 常见问题;

  • R 语言以及 Python 脚本案例。

数据分析整体流程

数据分析有一套标准化流程,很多人在做数据分析的时候,不知道怎么去开展或者怀疑自己做出的分析报告是否合理、是否全面,这是因为你对这一套标准化流程没有真正的理解。

来看一下标准化流程的九个步骤:

  1. 明确问题,先把问题定义清楚,因为很多人还没理清问题就直接去看数据了;

  2. 搭建框架,定义问题之后再把问题考虑全面、找到一条分析主线;

  3. 数据提取,用 MySQL、Hive 等工具提取相关数据;

  4. 数据处理,用 Excel、R、Python 处理数据;

  5. 数据分析,以数据分析方法论为主来分析数据;

  6. 数据展现,用 Tableau、Excel、R、Python 工具把你的数据展现出来;

  7. 撰写报告,考验你的文笔功底以及整体逻辑性;

  8. 报告演讲,考验你沟通能力,表达能力,被提问能力。所有的报告撰写完成之后不要直接去讲,还是要和业务方进行大量的沟通,如果不提前做好沟通,你在会议或公众场合上讲时很容易被别人挑战;

  9. 报告闭环,这是最难也是最大价值的地方。

这里面的数据提取、数据处理、数据展现是数据分析师前期的基本功,以工具为主,都是比较容易学到的,也比较容易完成。而明确问题、搭建框架、撰写报告、报告演讲、报告闭环更多是考验分析师的综合能力以及智商、情商,所以这块往往需要很多时间去沉淀。基于数据分析这一套标准化流程,其中涉及一些你必须要学的工具,下面我简单讲一下这些工具。

(数据分析必学工具)

  • MySQL、Hive:基本上所有的数据获取方式都是通过 MySQL、Hive 这两种语言来实现,同时你要学习一些 Linux 命令,因为在排查数据异常时会用到。你需要对这两门工具超级熟练,因为数据提取环节是不能出错的,这一步有问题,后面就都有问题。

  • Excel:Excel 是最高频的数据处理工具。工作中你经常遇到的一种情况,你的 leader 直接让你现场画个图,这时你最有可能用 Excel 而不是 R、Python。

  • R:R 是一门统计型语言,专门为数据分析而生,简单易学,但缺点是计算能力确实比较差,你导入两个 GB 数据就有可能导致死机。

  • Python:Python 是一门真正的脚本语言,可扩展性极强,算法研发同学必备。而数据分析以 Pands 包为主,其他常用包含爬虫、文本挖掘。

Excel 常用操作

先看 Excel 常用操作,一般通过 SQL 在数据库中提取数据,保存到本地 Excel,所以 Excel 是最基础也是最重要的一个数据分析工具,能用 Excel 坚决不用其他工具。

Excel 对比分析(筛选和色阶功能)

对比分析是数据分析中常见的一种分析方法。所有的数据只有对比才有意义,比如:每年的双 11 都会与之前的双 11 进行消费额对比。在工作中最常见的对比对象就是大盘,比如:新上线一个功能,怎么样评估这个功能效果,除了看功能使用人数,更要做这个功能和大盘的留存对比,如果高于大盘留存,代表这个功能有非常好的正向效应。

举例:我们需要看自身 App 与竞品的重合用户与自身 App 的所有用户在客户端内的消费差异,从而针对这些重合用户,做针对性运营,这时就要用到对比分析。

以微视这款 App 为例,你会看到第一列微视与抖音的重合用户消费分类和第三列微视大盘消费分类的消费 CTR 数据(如下图所示)。

利用对比分析可以算出微视与抖音的重合用户更加偏爱哪些分类(如下图所示)。

这里的相对值 diff ,它的计算方式是第二列的消费 CTR 除以第四列的消费 CTR 再减 1 ,然后你会发现搞笑、舞蹈、明星、美食分类,它的相对值是很明显的正向,因此,我们会针对这部分重合用户多推这些内容,减少其他内容权重。这里用到一个色阶功能,看起来会更直观。

Excel---时间序列拆解分析(透视图功能)

时间序列二次拆解分析:一般看某指标时,都会把时序周期拉长,看数据趋势,而数据都是波动的,所以会进行拆解分析,寻找具体波动项。

举个例子:新增用户的次日留存近半年出现下降,需要进行渠道维度拆解分析,看整体下降是因为所有的渠道下降还是某个别的渠道下降导致的。

这是一个模拟数据(如下图所示):

这是原始数据(如下图所示):

根据原始数据利用透视图功能插入透视图(如下图所示):

然后就得到这样一个横列的二维数据(如下图所示):

基于这个二维数据,我们再利用插入图表功能得到(如下图所示):

从图表发现 A 渠道变化不大,C 渠道是上升,只有 B 渠道是下降。因此是 B 渠道出现问题,需要对 B 渠道进行优化,所以在时间序列拆解分析流程中,透视图功能是非常有用的,操作也不复杂,你一定要学会。

Excel---相关性分析(常用函数功能)

Excel 的相关性分析会用到函数功能以及加载项功能。相关性分析落实到场景是:在做某个子产品的时候,都会被问到你这个子产品对大盘的贡献度或者说影响度,这个时候就可以用相关性去说话。

举个例子:想评估"微信读书"这款产品,"想法"这个底部 Button 子模块的留存对整体大盘的留存的影响度。我们要看"想法"Button 功能留存和大盘的留存在散点图上是一般相关性吗?我们都会先看散点图(如下图所示):

图中发现趋势比较一致,这时要利用 Excel 的高级工具中的分析工具库做相关性分析。具体分析工具库怎么找?是在文件---选项---加载项---点击分析工具库,点击确定之后,在数据工具栏会出现数据分析这个模块,基于这个模块做相关性分析。(如下图所示):

相关系数就是筛选数据,会在你指定的位置输出相关性系数(如下图所示):

无论是相关性回归还是傅里叶系数,甚至偏机器学习,Excel 都可以做。

Excel---临界点分析(插入图表复杂功能)

Excel 的临界点分析:对于任何一款产品,高活跃用户与低活跃用户在产品使用上必然不同,所以会存在某个指标,一旦用户在这个指标上的消费超过某个临界值时,后面用户会变得非常黏性,这就是 Magic number。

举个例子:对于滴滴 App,当前新用户留存较低,在分析的过程中,发现新用户在前三天一旦下单专车超过 3 次,留存就会大幅提升,所以滴滴搞了很多优惠活动,让用户基本上不花钱都可以坐车,所以滴滴留存大幅提升。

这是优惠券的使用人数以及对应的用户数及留存的原始数据(如下图所示):

当把这个数据用插入图表的复杂功能做成这样一张图,一个柱状图还有一个折线图(如下图所示)。柱状图对应用户数,折线图对应留存,然后它的横坐标是优惠券的使用人数,使用次数。

从图中可以发现当前优惠券的使用次数是主要集中在 0、1、2 这三种情况,但是在折线留存上却是一个拐点,这代表如果用户对一个优惠券使用次数超过三次,它的留存就能发生质的变化,所以围绕这个点可以想各种各样的办法刺激用户使用优惠券。

这就是 Excel 常用工具操作,Excel 虽然比较简单但它的功能非常强大。

SQL常见问题

你不仅要会 SQL ,而是要达到闭着眼睛都能写出来的水平。因为现在所有数据都是存储在各种数据库里面,如果你不会 SQL 或不熟练,那你写的代码要么提不了数,要么提的数就有问题,这会导致你后面所有的工作都没有办法开展,所以一定要非常会才可以。而对于如何训练 SQL 我也给出了一些方法。

常见现象:有同学一旦表关联较多,内部逻辑稍微复杂,就怀疑自己的代码准确性

解决方案:

  • 如果公司内有一个写 SQL 高手,在前期每次怀疑时,一定要把代码给对方 Review,多请教,同时模仿他写代码的风格和逻辑,2 个月之后再评估自己水平。

  • 如果公司内大家 SQL 水平都差不多,这个时候只能靠自己,可以这样做:

利用下班时间,把你怀疑的代码,按照你认为的几种逻辑,全部运行一遍,然后看哪个数据跟当前已知数据(一定要有一个已知数据作为参考,否则真不知道对与错)最为靠近,再去反推为何这样写看着更加合理。

判断 SQL 是否熟练的标准:如果现在 CEO 或你 Leader 直接让你快速跑一个数,你内心非常自信、非常高兴,就可以证明你是非常熟练了。

常见的问题:

  • Max 函数,对某一个误认为是数值型但实际是字符串型字段取最大值,采用 Max 函数,发现结果一直有错,如 13<9, -60<-70。

解决方法:在 MAX 括号里面的字段加一个零,把这个字段转化为数值型再进行比较。

sql
select max(a+0)
  • 日期处理,日期取年月份,时间戳取日期,日期格式转换等等需求,经常出现各种问题。

解决方法:先百度看用什么函数来转,在正式跑数据前,直接 select 函数(a)测试下。

一种特殊的日期处理是北京时间和 Unix 时间转换,代码如下:

sql
select from_unixtime(time), select from_unixtime(cast(substr(time,1,10) as int))(毫秒计时)
  • 先聚合再计数,如果要计算某个维度下的用户数,不要直接算用户数 count(distinct imei),而应该是如下代码:
sql
Select city,count(1) as uv fromselect city,imei,count(1) from a group by imei,city)t1 group by city
  • 一列变多行,ab 测试中会对一个用户打很多标签,而这些标签都是存在一个字段中,所以要看标签维度指标,就要对该字段进行列变行拆解,代码如下:
sql
Select *,b from t1 Lateral view explode(a) table as b
  • 取 Top,要看某分类下的 Top10 消费额子分类(金额一致就并列),代码如下:
sql
Select *,rank() over(partition by a order by b desc) as rank from table t1
  • 避免数据倾斜,小表在左,大表在右,使用 map join ,同时对空值进行过滤,代码如下:
sql
Select /*+mapjoin(a)*/  t1.city,t2.type,count(t1.imei) as uv
From 
select imei,city,count(1) as pv from a where imei != '' group by imei,city)t1
Join
select imei,type,count(1) as pv from a where imei != '' group by imei,type) t2
On t1.imei=t2.imei
Group by t1.city,t2.type

R 语言以及 Python 脚本案例

R 语言常见问题:对于一个产品的重要指标如留存,影响的因素非常多,需要找出这些影响因素的重要性,从而知道围绕哪些因素运营才能更好提升留存。这个问题产品经理一定会问你,实际上 SQL 和 Excel 明显都解决不了。

你需要换种方式理解上面这段话:哪些指标最能够区分用户留存还是未留存,越是明显区分,越重要。

再转化为机器学习语言:对于一个用户,他有一个 y(留存/未留存),还有很多 x(各种影响因素),需要找出 x 与 y 的关系,并给出 x 的重要度排序,可以用随机森林,逻辑回归,决策树来实现。

举例:根据用户的基础信息和行为信息来预测用户是否流失,并做出重要度排序。样本数据如下图所示:

这里面有用户标志、基础信息(年龄、婚姻、教育水平、开通月数),还有用户的行为信息项(基本费用、无线费用、电子支付、套餐类型),预测用户是否流失可以直接用决策树来实现。整体的基础代码非常容易(如下图左边所示)。虽然目前结果不理想,但是代码确实能够帮助找到切入点。比如从下图右侧可以发现,开通月数和电子支付这两个变量非常重要,因此就可以给产品运营一些建议,如何把这两个指标做起来。

R 语言这个例子你可以好好复盘下,先把业务提出的问题转化为机器语言,同时用一些代码来实现(代码不需要很复杂),借此来帮助业务找到切入点。

Python 相比 R 的其他价值

那么 Python 和 R 相比, R 的机器学习算法语言 Python 都能很快实现,而对于下面所说的几种情况,R 稍微来说就有一点难度了。

  • 爬虫:爬虫在工作中价值很大,比如爬取一些竞品的数据,用 R 不方便。

举例:资讯类 App 的很多文章是通过爬虫下发给大家,像今日头条的一些文章。

  • 文本挖掘:对评论数据研究价值很大,比如对 App 评论数据的分析,从而知道如何去做评论运营闭环。

举例:京东网易 App 的评论运营,其他 App 的热点评论置前。

  • UDF 函数:Hive 自定义函数有时并不能满足需求,此时就需要自己定义函数来实现需求,这时就可以用 Python 写个 UDF。

举例:计算机尼系数,Hive 中直接调用 UDF 能够很快输出,

  • 对于算法研发同学:个性化推荐、底层运维、Web 开发都是通过 Python 来实现。

总而言之,Python 是非常强大的第三方库。

总结

第一课时讲了国企数据分析,最重要的是打磨好综合技能;第二课时是 BAT 的数据分析,侧重方法论的研究;第三课时是中小企业的数据分析,我讲了如何准备去转型;而这一课时,我讲了数据分析的工具,比如常见的工具操作有哪些,用工具怎么提升业务。

下一课时将进入数据分析师宏观思维模块,也欢迎你关注我本人的公众号(微信搜索:数据分析学习之道),之后会定期更新原创高质量的数据分析文章。

这是课程评价链接,快来帮花木老师评价下吧!