讨论数据质量控制之前,我们先了解一下几种不同的境界!
1、昨夜西风凋碧树.独上高楼,望尽天涯路。 2、衣带渐宽终不悔,为伊消得人憔悴。 3、众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
上医治未病,中医治欲病,下医治已病!
夫事未有不生于微而成于着,圣人之虑远,故能谨其微而治之。众人之识近,故必待其着而后救之;治其微则用力寡而功多,救其着则竭力而不能及也。易经曰:“履霜坚冰至,”书曰:“一日两日万几”谓此类也。
除了境界,我们再来看个段子:
图片很搞笑,反应的问题也很真实:我们很多时候,你早早把问题解决了,也就没什么问题可以给你展示真正的技术了!
那种放着小问题不管不问,等他变大再解决的,反而因为有了展示的机会而收到重视!
看完这些,再来谈一谈数据预处理。
我们做数据处理,也分境界的。选择遇到问题逃避,是一种;选择遇到问题想办法解决,又是一种;选择在问题还没发展到问题的时候就去处理,也是一种。 这种预防性质的做法,我称之为:预处理!
那么应该怎么着手去做预处理呢? 首先预处理应该在数据生产之前启动,尽可能早的去做。甚至在拿到数据之前,跟对方协调好需要的数据格式,即使没办法要求对方,那也要有这种意识。因为如果不把问题在最开始解决调,越往后需要花费的代价越大,一旦数据的生产/处理流程开始了,再回过头来改数据,那太难了,也太浪费资源了。所以在真正的数据生产开始之前,就应该做好预处理,俗话说得好:磨刀不误砍柴工!
那么应该怎么做预处理? 我认为做预处理应该从这么几个方面去进行数据质量的控制:
在拿到一份数据之后,首先要做的事情就是确认数据是否是全量数据,有没有遗漏、缺失。比方说你协调了一份公交数据,以郑州为例,在去拿数据之前假如你就知道郑州的公交线路大概是330条,而你只拿到了200条,那这份数据肯定就不是一份完整的数据。 那么拿到了330条就意味着完整了吗?如果还有这种认识,说明你受的摧残不够!
正确性的范围很广泛,从正确性展开,可以有很多分支可以延申。以空间数据而言,正确性首先要包括的就是属性信息与图形信息。从空间上看,首先要检查的是图形的坐标系对不对,其次是空间上有没有拓扑问题等其他检查项。从属性上看,首先要检查的是数据的表结构有没有问题,然后在检查数据的内容是不是正常,比如查一下有没有错别字、全角半角字符等问题。
唯一性,很好理解,对于空间要素,是不是在空间与属性上都是全局唯一的。对于非空间要素,是不是由要素属性信息完全重复。有重复,那肯定是不唯一,但没重复也不一定就唯一!
一致性指的是针对一些有内在逻辑关系的数据是不是有矛盾。这个关系,可以是单个数据集本身的关系,也可也是多个数据集之间的关系,甚至单条要素的单个字段,都会有一些逻辑关系。比方说这条地址信息:兰州市平川区长征东路106号! 这条地址看起来好像是没什么问题,但如果你知道平川区是属于白银市的,你肯定会判断他是错的。
上面讲的四个方面,只是简单讲一讲。做过质检方案的朋友可能会有些了解,这里写的只是很少一部分。并且质检这东西,很多项目都会有交叉。在实际的检查中,也许会发现,查完了唯一去查正确,发现有些不正确。你改了这个错误,再回来跑质检,发现数据又不唯一了。没办法,就是这么绕!
数据预处理,它不是可以这样的顺序的,可以一条道走到黑的
它是这样的一个环,需要你来回转,来回的分析,反复的处理
数据预处理,就是这样,数据处理,也是这样!都复杂复杂!
既然都复杂,不如选择一个成本低、并且效果好的方案。也就是在刚一开始的时候,就把可能遇到的问题都解决掉!像上面的那个段子中的图片,网上有很多的解读,但我认为这张图传递了这样的信息:越早的采取措施,就越节省资源!在行情不好的时候,节省下来的资源,就是利润!
相较与在真正的数据生产中改正问题,预处理可以让我们以较小的资源投入来提升数据的质量!
上医治未病,我做预处理!