数据分析学习笔记-----数据清洗之数据清洗概述
数据概述
从广泛的意义上来讲,数据是一个宽泛的概念,包括但不限于:
- 计算机中的0101代码
- 日常生活中的音乐,图片,视频
- 人类的语言,文字
- …
我们要了解数据清洗,就需理解数据的内涵和外延
常见的数据有:
- 表格数据:关系记录、数据矩阵、向量、事务数据
- 图和网络:万维网、社交网络、分子结构
- 多媒体数据:文本 、图像、视频、音频
其中,比较重要比较常见的分析数据是表格数据。这里重点介绍一些关于表格数据的内容。
表格数据
-
数据集(数据库)
由数据对象构成,一个数据对象表示一个实体 -
概念
- 样本(samples or examples)
- 实例(instances)
- 数据点(data points)
- 对象(objects)
- 元组(tuples)
-
数据对象由属性(attributes)及其值(value)构成
- 表格数据行为数据对象
- 表格数据列为特征
-
表格数据的特征
- 类型
名义型(Nominal)
布尔型(Binary)
等级型(Ordinal)
数值型(Numeric)
- 类型
数据清洗的重要性
什么是数据清洗 ?数据清洗是从一个充满拼写错误,缺失值,异常值等问题的原始数据集(Raw Data)通过数据转换,缺失处理,异常处理等手段映射为一个符合质量要求的“新”数据集(Consistent Data)的过程。
数据清洗在大数据分析流程中的位置:
- 数据采集
- 数据解析
- 数据清洗
- 数据分析
- 数据应用
为什么要数据清洗?
- 从不同渠道获得的数据,集成在一起,组成新的数据集,需要进行数据清洗,来保证数据集的质量
- 数据分析算法对输入的数据集有要求
- 现实情况下的数据集质量不尽如人意,需要数据清洗
数据存在的问题:
-
单数据源
- 违背属性约束条件:日期,电话号码,身份证号等
- 属性违反唯一性:主键同一取值出现多次
- 数据更新不及时
- 数据存在噪音
- 数据存在拼写错误
- 数据存在相似,重复记录
-
多数据源
- 同一属性存在不同的名称:人的真实姓名和绰号
- 同一属性存在不同的定义:字段的长度测量单位,类型不一致
- 数据存在重复,拼写错误
- 数据的汇总时间不一致:按照年度,季度,月度统计
- 数据的存储单位不一致:按照GB,TB为单位存储
数据质量评估
如何评估数据的质量?
常用的评价数据质量的指标有以下几种:
- 准确性,一致性,时效性,完整性,数据重复,数据冗余
- 易用性和可维护性
- 相关性和可信度
准确性:考察数据集记录的信息是否存在异常或错误
- 业务数据通常存在特征取值缺失,特征缺失,主键缺失等问题
- 问题多发生在数据的源头,由各种主客观原因(主观录入错误,数据需求不 明确,数据提供者故意隐瞒等)所导致
- 要获得高质量的数据集,需要把控好数据收集,数据录入的源头
一致性 :考察数据是否符合统一规范,数据记录是否保持统一格式
数据一致性问题通常存在于数据整合阶段:
- 来自不同数据源的数据汇总在一起,特征的表述不相同
- 相同的特征名称在不同的数据源中代表不同的含义
- 特征名称不同,含义相同
- 特征名称相同,含义不同
时效性:考察数据从产生到分析的时间间隔,也称为数据的延时时长
- 数据集所代表的信息并不一定能正确描述当前的情形
- 爬取动态网页数据,由于网页内容,结构都在变化,获取的数据带有明显的时效性
- 考虑到数据获取的时间成本,数据分析的周期不能过长,会导致分析的结论失去现实意义
完整性:考察数据信息是否存在缺失,包括数据集的字段以及数据记录
数据重复:考察数据特征,数据记录的重复情况
易用性和可维护性:考察数据的使用和访问情况,以及数据的更新,维护状况
相关性和可信度:考察数据与实际业务的相关情况,考察数据的实用性
数据冗余:考察数据集特征之间的相关性
如果一个特征能由另外的特征推导出来,那么该特征可能是冗余的。比如,年龄可以由生日推算获得,那么年龄和生日之间存在冗余。使用定量的相关分析考察特征之间的冗余程度
- 离散型特征之间的冗余程度:卡方检验
- 连续型特征之间的冗余程度:相关系数
数据清洗的主要内容
数据初步处理
- 使用Python的标准库或者第三方库读入数据,或者将数据读入数据库
- 使用数据可视化手段观察数据的取值分布情况
- 对数据进行整合或分组
缺失值处理
- 确定缺失值的范围,以及所占比例
- 去除不需要的特征
- 使用缺失值填补等方法对缺失值进行填
异常值处理
- 检测异常值:基于统计,距离,密度的检测方法,复杂方法如孤立森林
- 处理异常值:删除异常值
- 保留异常值:选择鲁棒性更强的学习算法
数据转换
- 数据的格式进行统一:不同数据文件格式的转换
- 数据去重:去除重复的数据记录,提高算法运行效率
- 数据标准化:消除数据单位,量纲不同带来的影响
- 数据离散化:将连续型数据转换为离散型数据,增强模型对于异常值的鲁棒性