Python数据分析实战(清华科技大讲堂)
作者简介
内容简介
第3章数据预处理——不了解数据一切都是空谈 数据预处理是数据分析的**个重要步骤,只有对数据充分了解,经过对数据质量的检验,并初步尝试解析数据间关系,才能为后续的数据分析提供有力支撑。了解数据是对数据本身的重视。数据分析是为了解决实际问题,数据往往来源于实际生活,而直接收集到的数据总是存在一些问题,例如存在缺失值、噪声、数据不一致、数据冗余或者与分析目标不相关等问题。这些问题十分普遍,所以,不了解数据,一切都是空谈。 了解数据的过程如下: 首先观察统计数据的格式、内容、数量; 然后分析数据质量,是否存在缺失值、噪声、数据不一致、数据冗余等问题; *后分析数据相关性,是否存在数据冗余或者与分析目标不相关等问题。在现在的数据分析过程中,尤其是在利用机器学习的算法进行数据分析的过程中,特征工程也是十分重要的一环。本章将对上述过程中的关键步骤进行详细介绍,具体内容如下: 3.1节给出与数据相关的一些概念,以便于读者的后续理解; 3.2节给出解决数据质量的一系列数据校验的手段; 3.3节给出分析数据相关性的一系列方法; 3.4节讲述特征工程所需进行的步骤。 3.1了解数据 数据分为定性数据和定量数据,其具体分类如图31所示。定性数据包括两个基本层次,即定序(ordinal)和名义(nominal)层次。定序变量指该变量只是对某些特性的“多少”进行排序,但是各个等级之间的差别不确定。例如对某一个事物进行评价,将其分为好、一般、不好3个等级,其等级之间没有定量关系。名义变量则是指该变量只是测量某种特征的出现或者不出现。例如性别“男”和“女”,两者之间没有任何关系,不能排序或者刻度化。 图31数据类别结构 每一个细致的数据分析者首先需要考查每个变量的关键特征,通过这个过程可以*好地感*数据,其中有两个特征需要特别关注,即集中趋势(central tendency)和离散程度(disperasion)。考查各个变量间的关系是了解数据十分重要的一步,有一系列方法可用于对变量间的相关性进行测量。关于数据本身的质量问题,需要数据分析者了解数据缺失情况、噪声及离群点等,相关概念将在下面的内容中给出。 1. 集中趋势 集中趋势的主要测度是均值、中位数和众数,这3个概念对于大多数的读者而言应该不陌生。对于定量数据,其均值、中位数和众数的度量都是有效的; 对于定性数据,这3个指标所能提供的信息很少。对于定序变量,均值无意义,中位数和众数能反映一定的含义; 对于名义变量,均值和中位数均无意义,仅众数有一定的含义,但仍需注意,众数仅代表对应的特征出现*多,不能代表该特征占多数。其中,对于名义变量的二分变量,如果有合适的取值,均值就可以进行有意义的解释,详细说明将在后面的章节中阐述。 2. 离散程度 考虑变量的离散情况主要考虑变量的差别如何,常见的测度有极差、方差和标准差,另外还有四分位距、平均差和变异系数等。对于定量数据而言,极差代表数据所处范围的大小,方差、标准差和平均差等代表数据相对均值的偏离情况,但是方差、标准差和平均差等都是数值的**量,无法规避数值度量单位的影响。变异系数为了修正这个弊端,使用标准差除以均值得到的一个相对量来反映数据集的变异情况或者离散程度。对于定性数据,极差代表取值类别,相比定量数据,定性数据的极差所表达的含义很有限,其他的离散程度测度对于定性数据的含义不大,尤其是对于名义变量。 3. 相关性测量 在进行真正的数据分析之前,可以通过一些简单的统计方法计算变量之间的相关性,这些方法包括: 1) 数据可视化处理 将想要分析的变量绘制成折线图或者散点图,做图表相关分析,变量之间的趋势和联系就会清晰浮现。虽然没有对相关关系进行准确度量,但是可以对其有一个初步的探索和认识。 2) 计算变量间的协方差 协方差可以确定相关关系的正与负,但它并不反映关系的强度,如果变量的测量单位发生变化,这一统计量的值就会发生变化,但是实际变量间的相关关系并没有发生变化。 3) 计算变量间的相关系数 相关系数则是一个不*测量单位影响的相关关系统计量,其理论上限是+1(或-1),表示**线性相关。 4) 进行一元回归或多元回归分析 如果两个变量都是定性数据(定序变量或者名义变量),则在评估它们之间的关系时,上述方法都不适用,例如画散点图等。定序变量可以采用肯德尔相关系数进行测量,当值为1时,表示两个定序变量拥有一致的等级相关性; 当值为-1时,表示两个定序变量拥有**相反的等级相关性; 当值为0时,表示两个定序变量是相互独立的。对于两个名义变量之间的关系,由于缺乏定序变量的各个值之间多或者少的特性,所以讨论“随着X增加,Y也倾向于增加”这样的关系没有意义,需要一个概要性的相关测度,例如可以采用Lamda系数。Lamda系数是一个预测性的相关测度,表示在预测Y时如果知道X能减少的误差。 4. 数据缺失 将数据集中不含缺失值的变量称为**变量,将含有缺失值的变量称为不**变量,产生缺失值的原因通常有以下几种: (1) 数据本身被遗漏,由于数据采集设备的故障、存储介质的故障、传输媒体的故障、一些人为因素等原因而丢失。 (2) 某些对象的一些属性或者特征是不存在的,所以导致空缺。 (3) 某些信息被认为不重要,与给定环境无关,所以被数据库设计者或者信息采集者忽略。 5. 噪声 噪声是指被观测的变量的随机误差或方差,用数学形式表示如下: 观测量(Measurement)=真实数据(True Data)+噪声(Noise) 6. 离群点 在数据集中包含这样一些数据对象,它们与数据的一般行为或模型不一致,这样的对象称为离群点。离群点属于观测值。 3.2数据质量 数据质量是数据分析结果的有效性和准确性的前提保障,从哪些方面评估数据质量则是数据分析需要考虑的问题,典型的数据质量标准评估有4个要素,即完整性、一致性、准确性和及时性。 3.2.1完整性 完整性指的是数据信息是否存在缺失的情况,数据缺失的情况可能是整个数据记录缺失,也可能是数据中某个字段信息的记录缺失。不完整的数据所能借鉴的价值会大大降低,因此完整性是数据质量*基础的一项评估标准。 数据质量的完整性比较容易评估,一般可以通过数据统计中的记录值和**值进行评估。 下面从3.1节了解数据时得到的数据统计信息看看哪些可以用来审核数据的完整性。首先是记录的完整性,一般使用统计的记录数和**值个数。例如,网站*志*访问量就是一个记录值,平时的*访问量在1000左右,若突然某**降到100,则需要检查数据是否存在缺失。再例如,网站统计地域分布情况的每一个地区名就是一个**值,我国包括了32个省和直辖市,如果统计得到的**值小于32,则可以判断数据有可能存在缺失。 本书从理论和实战两个角度对Python数据分析工具进行了介绍,并采用理论分析和Python实践相结合的形式,按照数据分析的基本步骤对数据分析的理论知识及相应的Python库进行了详细的介绍