我们收集到的数据并不一定都是可用的,对于电商来说,有可能有刷量数据,比如在店铺刚上线前期为了冲销量有很多假订单,甚至还会有竞争对手攻击而制造的假数据,还可能有由于设备不稳定性而造成的抖动等,这些数据都是不可用的脏数据,一般都有比较明显的数据集中特征或者错误,运用这些特征,建立处理规则,即可清洗掉脏数据,避免对正常数据分析造成干扰。 同时,知晓这些特征,还可用于建立阻止机制,当再次有类似特征流量时,可以判断并进行阻止。
清洗完成后并不能马上用于数据分析,这是因为有些数据比较原始,仍然处于”机器不可读“的状态,也不利于人工分析。比如你采集到了用户在你的优惠活动H5页面的点击位置,想研究H5的UI设计与点击位置的关系。那需要在数据整理阶段,将原始数据中的点击坐标数据做加工,根据规则,比如根据坐标范围划分为边缘/中心/上下左右等分块区域,对数据进行重新标记,这样你在分析时就可以直接看区块维度数据了。同样,比如你想分析购买商品价位分布,那就需要提前进行划分,比如1-10,10-50,50-100,100-1000,1000+等等,否则原始数据里,每0.1元阶梯上都有商品分布,最后根本无法收敛出结论。这个过程,我称之为对数据进行结构化处理的过程。
数据处理的核心是基于一定的规则,对数据进行过滤和结构化处理,以使数据达到”可分析“的状态。 数据处理规则的制定,应当同时考虑通用,我们之前提过面向对象,在系统中,应当把数据看作某种原料,它是可以被加工成各种形式,被各种下游模块进行使用的。为了让后续被各模块甚至是新产生的模块进行使用,在上一篇已经提到了数据收集的全面,在数据处理过程中,应当注意的是尽量保证处理的结果能够对接各种需求。
还是看上面的例子,H5点击位置的处理,可以根据区块划分,但有个H5的视觉结构是环形,PM想研究视觉中心按半径的点击行为分布,则原先的区块划分结构并不能很好的满足需求。有两种做法,一种是提前了解清楚需求,将下游需要的数据形式全部处理好;一种是处理数据时附带原始数据,在有其他需要时,嫁接中间件,进行再次的数据处理。我们倾向于第二种方式,或者将“中间件”作为数据处理模块中可按规则进行配置的一种能力,这样可以保证即使有未知的数据使用需求,也能较快速的完成适配。这其实就是面向对象的思路,将数据处理模块不作为一个过程,而作为一个“将数据进行加工以适配下游使用需求”的,可灵活更改的模块。
基于“数据全收集”的理念,再加上“可配置”的通用数据处理模块,可以构建可长期使用的“数据仓库”,将数据从流中剥离出来,成为一个固有的库,可以供各个部门,各种分析需求,进行使用和对接。
可以关注我的公众号获取推送。
image
网友评论