当我们拿到一个数据集,我们应该如何去认知这个数据集。正确的步骤应该是 数据源质量 -> 数据类型 -> 数据集质量 -> 平均水平 -> 数据分布 -> 量变关系 -> 多维交叉。
经验教训告诉我们,在拿到数据集后,花些时间去审核数据源的质量都不为过。数据源,分为两部分,一部分是数据库中的表,一部分是取数代码,也就是 sql代码。 对于本次电商项目,那么数据源的表就是 DDS_EMALL_ALIPAY_* 的20张表,而取数代码,就是生产数据进入数仓时的逻辑(全部表做了拉链,但是少部分表,真正用拉链表做了状态更新)
表中的字段有没有在近期改动?做了什么样的改动?
就拿爬虫数据来说,爬虫的数据的量级可能变化(代码或者网页变化导致)
该表是否是中间表?他的字段内容是从哪里来的?
知道数据源的来源是很重要的。搞清楚数据流向有利于更有把握阐述问题。
对于数据集的质量,往往就需要做一些逐步做一些东西。处理数据集中的垃圾(特殊符号,对于模型,中文字就是特殊字符),处理空值,处理异常值,处理异常字段,统一数据类型和单位。而做一些就相当于在看照片前,将照片表面上的灰层去掉,将缺失的像素添上,将马赛克修掉。
字符编码
常见的 utf-8,gbk,gb2312。 最常见的还有 utf-8 with bom 和 utf-8 without bom,这中间是有区别的。oracle导出是 utf-8 with bom, 需要转成 without
很多时候我们是直接删除空值,但是 如果空值的行数超过1%,我们就需要去思考为什么是空值。
其实我们遇到的大多数空值问题是这样的场景。什么什么删选条件对某个id 做聚合。
异常值往往需要我们好好的查看,对数据进行排序后,发现某些数值特别夸张,或者文本特别长。 对于数值变量,是有数值型变量异常值的判断方法。
多个日期字段统一为 date 或者 timestrip。等等等 还有一些量级,比如说数据单位是什么,不要有的是 元,有的是万元。
描述统计的内容才是数据认知的核心技能。 描述统计笼统说就是包含了平均数,方差,标准差,最大最小值,四分位数,峰度,偏度等一系列统计量。 描述统计的过程就是让你快速的从一堆数据中抽象出信息的过程。
中位数能够避免数据的平均数受到异常值的影响 众数真正的价值,我觉得并不是用在数值型的数据中,而是用在类别型的数据中
标准差数值的大小,衡量了数据序列的波动情况,即稳定性。我认为任何风险衡量的模型,其本质都离不开衡量波动性,即方差与标准差。一个数据的波动性越大,说明它所涵盖的信息量越大,信息量越大,不可知的因素就一定会更多,因此风险会更大。
衡量两个数据序列间相互波动的情况是有方法的,我们称其为协方差。假设有A和B两组数据,数字个数相同,AB的协方差就是A中的数值与A均值的差乘以B中的数值与B的均值的差,再除以A组数据中数字的个数。
五数
频率分布图实在是观察数据分布的第一神器。画出两个(一个是分箱上的柱状图,一个是累计分布的折线图)
利用相关性可以干嘛。
原文:http://www.cnblogs.com/chenb/p/6415622.html