版本 创建人 创建时间
v1.0 jinpeng 2020-05-17

本文主要引自:https://zhuanlan.zhihu.com/p/108912651

前言

要做好数据分析,数据是基础。如果数据有问题,那么再好的分析也没有意义。

好的数据分析师,是具备数据准确性意识的,他们过往的经验会告诉他们,不要盲目相信数据质量,但凡数据都值得怀疑,因为这里面出错的可能性太高了。数据在分析前后,经历了很多道工序,从数据定义、上报、汇总、加工、到分析使用,每一道工序都可能出错,这使得数据风险大大提升。

一、数据可能出错环节

1,数据来源

  • 使用同源数据:同一个数据,有很多种来源。有些可能来自于埋点平台(如GIO),有些来自于服务端记录,有些甚至是人工记录。这些数据可能存在微弱的区别,在使用时需要统一一个数据来源。注意不要盲目的拼接,这样很容易出错。我举个工作中的例子:对于公司内部的数据和第三方平台的数据,不能盲目的拼接,公司内部包含敏感数据,和外部数据的userid可能就不一样,如果拼接,很可能导致重复计数。


  • 数据定义一致:有时候在同一种来源里,也存在很多不同的记录和统计记录。这意味着,我们在使用这些数据之前,需要统一数据定义的一致性。举例:对于人均消费额的定义,有人的定义是总消费额/日活人数,有人认为是总消费额/消费人数。我举个工作中的例子:对于流失用户有很多不同定义,有的是说近6个月没有下单的用户被认为是流失用户,有的认为近一个月没有下单就算


  • 排除错误数据:有时候,版本迭代更新后,数据上报可能会存在问题。导致某阶段数据没法正常统计,这些数据需要排除,否则会极大干扰结果。


2,数据内容

  • 排除虚假数据:有时,并非所有数据都是真实的数据。有时候出于测试的目的,会出现一些虚假数据。这时候就需要排除这部分数据,避免干扰数据分析。我举个工作中的例子:我们想要测试某一款产品的数据是否能跑通,各关节是否都能取到数据,这时候就要弄些假数据来测试一下


  • 了解字段覆盖情况:在实际工作过程中,出于种种原因,字段的覆盖率不全,这个很多时候要结合业务去思考。这时需要弄明白什么情况下数据会缺失,不要盲目相信数据是随机采样的。因为很可能部分用户因为共同的问题,没有提供类似字段,导致样本存在明显偏差。举个例子,假如用户的性别和手机号只有会员才强制填写,那么将这两个字段来代表整体显然是不合理的。我们要做好心理准备,很多字段可能并不能反映我们理解的真实情况。我举个工作中的例子:这个在取数时经常遇到,这个字段是我们需要的,但是取数时偶尔会发现其中有空值,取出唯一值查看,发现绝大多数都是空值,那么这个字段显然是有问题的。至于是废弃了还是数据未同步还需再行确认。

**

  • 清洗错误数据:数据出错,是最常见的了。比如性别字段,可能出现除了男女之外的其他性别,这个可能是上报数据时产生的逻辑错误。或者一个用户存在2个id,这些在实际工作中都可能出现,那我们需要想办法规避这样的问题。我举个工作中的例子:说白了,就是可能会有脏数据,这个情况比较多,涉及数仓部门,后续我可能会整理一个单章专门说说脏数据,敬请期待~


3,数据加工过程

  • 谨慎对待人工处理:但凡涉及人的环节,都可能出错。比如复杂的excel处理,大量的问卷采集。但凡能交给机器处理的,能自动化的,尽量批量化处理。尽量减少人工在此过程中可能出现的问题。可以通过一些模板或者格式化的规范去要求,尽可能减少成本。我举个工作中的例子:EXCEL中有重复值,在筛选时很可能出现问题。

  • 格式转换要小心:数据在进行数据类型转换时,也可能出现问题。常见的字符串转数字,浮点转整数等等,都可能出现问题。这个过程只能多加小心,仔细检查。我举个工作中的例子:使用excel时,数字过长会被转为科学计数法,导致四舍五入,使得原本数据产生偏差,这时候就要想办法把数字转成文本再导出。

  • 数据筛选:在呈现数据时,有可能因为业务上的需求,对某些不需要的数据进行了筛选,结果后续出现新的需要筛选的页面时,没有对其进行筛选,就会导致这部分数据无法呈现。我举个工作中的例子:在可视化数据时,需要区分页面是落地页还是注册页,这时候需要前端开发提供url,然后数据分析师对这个url进行筛选(我理解即加入白名单),随后就可以看到数据。但是迭代更新后出现新的落地页或注册页,但是开发没有及时同步给BI,那么这部分数据自然也就暂时看不到了。

二、应对数据不准确的方法

1,数据校验

顾名思义,即校验数据的准确性。不进行数据校验的数据,是没有说服力的。它很可能是个错误的数据。数据校验的方法如下:

  • 外部数据印证:即拿多个数据源的数据进行相互比对。如果发现数据对不上,那么很可能存在着问题。一定不要轻易放过这些偏差,觉得只是误差,这些问题的背后,往往存在问题。我举个工作中的例子:公司内部的埋点和第三方平台埋点对于同一个页面取到的数据不一致,这个就很能说明问题。要么是原本就存在口径上的误差,要么是因为对流量日志表底表进行了加工。

  • 数据相互印证:即数据加工过程的前后对比,比如数据处理前后,同一个指标出现巨大差异,而且这个变化并不符合逻辑,很可能加工过程中出现了错误。

**

  • 数据合理性判断:一般来说,数据有自己合理的范围,比如每次阅读文章大概在几分钟,用户每天登录的次数大概在十几次,广告点击率在百分之十以下,如果出现了一个特别异常的值,那么就值得特别注意。此外,除了这些参考值以外,还可以同比环比横向比,如果发现某个值不符合预期,那么也应该仔细分析。

2,使用数据习惯

即便数据一时半会没有发现问题,也需要注意数据的使用习惯。遵循这些经验,你将避开很多潜在的坑点。

  • 了解数据问题:如果你刚刚接手一批数据,那么最好不要直接开始自己探索,问问数据管理者和使用者,让他们告诉你数据有哪些问题(为什么之前没想到。。),这样能节约你很多的时间

  • 用前先扫一眼:在使用数据之前,需要先抽样扫读一下明细数据,这样能帮你发现大部分明显问题。解决了这20%的关键问题后,剩下的数据问题,对结果的影响也就没那么大了

  • 及时报告问题:如果发现数据有问题,需要及时进行沟通上报,因为如果不修复这个问题,问题就一直在,而且很可能会因为这些错误数据,带来有误导性的结论