版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章大数据的获取和预处理本章学习目标1.掌握爬虫的基本概念和流程,并使用Scrapy实现数据爬虫;2.掌握数据清洗的基本原理和流程,并使用Pandas实现数据清洗;3.了解并掌握数据规约的基本概念和操作;4.了解并掌握数据标准化的基本概念和方法。6.1.1爬虫的基础知识1.HTTP基本原理 HTTP协议(HyperTextTransferProtocol,超文本传输协议)基于TCP/IP通信协议来传递数据,是用于从WWW服务器传输超文本到本地浏览器的传送协议。该协议工作于客户端-服务器架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求,Web服务器根据收到的请求,向客户端发送响应信息。6.1.1爬虫的基础知识(1)
HTTP基本原理——HTTP请求报文当客户端发送一个请求后,一般都会得到一个服务器的响应。服务器发送给客户端的HTTP响应用于向客户端提供起请求的资源,以及客户端请求的执行结果。与请求类似,HTTP响应也同样由四部分组成,分别为响应行、响应头、空行和响应体。6.1.1爬虫的基础知识(2)
HTTP基本原理——HTTP响应报文当客户端发送一个请求后,一般都会得到一个服务器的响应。服务器发送给客户端的HTTP响应用于向客户端提供起请求的资源,以及客户端请求的执行结果。与请求类似,HTTP响应也同样由四部分组成,分别为响应行、响应头、空行和响应体。6.1.1爬虫的基础知识1.HTML和Xpath基础 HTML(HypertextMarkupLanguage,超文本标记语言)是一种标记语言,包括一系列标签,利用这些标签可以将网络上的格式统一,从而使得分散的Internet资源连接为一个逻辑整体。HTML用于显示信息,而传输和存储信息则是使用XML(ExtensibleMarkupLanguage,可扩展标记语言)。XML由XML元素组成,每个XML元素包括一个开始标记,一个结束标记以及两个标记之间的内容。可用来标记数据、定义数据类型等。Xpath(XMLPathLanguage,XML路径语言)是在XML文档中查找信息的语言,但同样也适用于HTML文档的搜索。6.1.1爬虫的基础知识(1)HTML和Xpath基础——HTML元素 HTML是一种用来结构化Web网页及其内容的标记语言。网页内容可以是:一组段落、一个消息列表,也可以含有图片和数据表。HTML由一系列元素组成,这些元素可用来包围不同部分的内容,使其以某种方式呈现或工作。一对标签可以为一段文字或一张图片添加超链接,将文字设置为斜体,改编字号等。元素主要包含以下几部分:开始标签(Openingtag):包含元素的名称(本例为p),被大于号、小于号所包围。结束标签(Closingtag):与开始标签类似,只是在其元素名之前包含了一个斜杠,这表示元素的结尾;内容(Content):元素的内容,本例中就是所输入的文本:“我的院子里有两棵树;”元素(Element):开始标签、结束标签与内容相结合,就是完整的元素。6.1.1爬虫的基础知识(2)HTML和Xpath基础——HTML文档
以上介绍了基本的HTML元素,现分析完整的HTML页面,示例如下:6.1.1爬虫的基础知识(3)HTML和Xpath基础——树表示法
浏览器发送请求后,会收到服务器响应的HTML文档,其后,浏览器需要对其进行解析,从而将HTML文档转换为常见的网页。解析主要分为三大步骤:DOM改造、布局以及绘制页面。DOM表示法(DocumentObjectModel,文档对象模型)具有跨平台、语言无关等特点,并且被大多数浏览器所支持,是W3C组织推荐的处理可扩展标记语言(HTML或XML)的标准编程接口。 DOM可以将HTML文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合,即HTML代码的树表示法。这种对象模型决定了节点之间都有一定的关联,如父子、兄弟等。6.1.1爬虫的基础知识(3)HTML和Xpath基础——树表示法
6.1.1爬虫的基础知识(3)HTML和Xpath基础——树表示法其对应的DOM树表示如下:
6.1.1爬虫的基础知识3.
正则表达式
正则表达式是用于描述一组字符串特征的模式,用来匹配特点的字符串。通过“特殊字符串+普通字符”来进行模式描述,从而达到文本匹配目的的工具。正则表达式可在许多语言中使用,无论是前端的JavaScript、还是后端的Java、Python,它们都提供相应的接口/函数支持正则表达式。
6.1.1爬虫的基础知识3.
正则表达式
正则表达式中有一些重复限定符,把重复部分用合适的限定符替代,常用的如下表所示:
6.1.1爬虫的基础知识4.爬虫的概念
简单来说,爬虫就是模拟浏览器发送网络请求,获取请求响应,获取网页并提取和保存信息的自动化程序。自动化程序是指使用爬虫来代替人来完成这些操作,而爬虫就是代替人来完成爬取工作的自动化程序,它可以在抓取过程中进行各种异常处理、错误重试等操作,确保爬取高效地运行。具体介绍如下:
6.1.1爬虫的基础知识(1)爬虫的基本概念-获取网页
爬虫首先要做的就是获取网页,即网页的源代码,其中包含了网页的有效信息,因此只要把源代码获取下来,就可以从中提取到有用信息。
所谓请求,就是由客户端发送给服务器的信息,从而获取消息,服务器返回的响应便是网页源代码。因此,爬虫的关键就是构造一个请求并发送给服务器,然后接收到响应并将其解析出来。 Python提供了许多库帮助我们实现构造请求和解析响应,如urllib、requests等。通常人们使用这些库来实现HTTP请求操作,请求和响应都使用类库提供的数据结构表示,得到响应之后只需要解析数据结构中的Body部分,就可以得到网页的源代码。
6.1.1爬虫的基础知识(2)爬虫的基本概念-提取信息
获得网页源代码后,需要做的就是分析源代码,从中提取到我们感兴趣的信息。首先,最常用的方法是采用正则表达式提取,但是在构造正则表达式时比较复杂且容易出错。
另外,由于网页的结构有一定的规则,因此可以利用从网页节点属性或XPath来提取网页信息的库,如BeautifulSoup、pyquery、lxml等,使用这些库,可以高效地从中提取到有用地网页信息,如节点的属性、文本值等;
6.1.1爬虫的基础知识(3)爬虫的基本概念-保存数据
提取信息以后,我们一般将提取到的数据保存到某处以便后续使用。保存形式有很多,如简单保存为TXT文本或JSON文本,也可以保存到数据库,如MySQL和MongoDB等,也可以保存到远程服务器,如借助SFTP进行操作等;
6.1.2Scrapy爬虫的原理与流程Scrapy框架介绍
6.1.2Scrapy爬虫的原理与流程Scrapy框架介绍Engine:即引擎,处理整个系统的数据流处理,是Scrapy框架的核心,负责控制数据流在系统中所有组件中的流动,并在相应动作发生时触发事件;Scheduler:即调度器,接受引擎发过来的请求,并将其加入队列中,在引擎再次请求时将请求提供给引擎;Downloader:即下载器,用于高速下载网页内容,并将下载内容返回给spider;
6.1.2Scrapy爬虫的原理与流程Scrapy框架介绍Spiders:即爬虫,定义爬取的逻辑和网页内容的解析规则,主要负责解析响应并生成结果和新的请求;ItemPipeline:即项目管道,负责处理spider从网页中抽取的数据,主要是负责清洗,验证和向数据库中存储数据;DownloaderMiddlewares:即下载中间件,是处于Scrapy的Request和Requesponse之间的处理模块;SpiderMiddlewares:即spider中间件,位于引擎和spider之间的框架,主要处理spider输入的响应和输出的结果及新的请求实现。
6.1.2Scrapy爬虫的原理与流程2.Scrapy工作流程
当Spider要爬取某URL地址的页面时,首先用该URL构造一个Request对象,提交给Engine(图6-4中的①),随后Request对象进入Scheduler,按照某种算法排队,之后的某个时候从队列中出来,由Engine提交给Downloader(图6-4中的②、③、④)。Downloader根据Request对象中的URL地址发送一次HTTP请求到目标网站服务器,并接受服务器返回的HTTP响应,构建一个Response对象(图6-4中的⑤),并由Engine将Response提交给Spider(图6-4中的⑥),Spider提取Response中的数据,构造出Item对象或根据新的连接构造出Request对象,分别由Engine提交给ItemPipeline或者Scheduler(图6-4中的⑦、⑧)。这个过程反复进行,直到爬完所有数据。同时,数据对象在出入Spider和Downloader时可能会经过Middleware进行进一步的处理。
6.2数据清洗
大数据时代,数据必须经过清洗、分析、建模、可视化才能体现其价值,由于数据集是面向某一主题的数据的集合,这些数据从多个数据源提取出来,这样就避免不了有的数据是错误数据,有的数据相互之间有冲突,这些错误或有冲突的数据一般是使用者不想要的,称为“脏数据”,按照一定的原理和规则把“脏数据”“洗掉”,就是数据清洗。具体来说,数据清洗主要包括检查数据一致性,处理无效值和缺失值等。其目的在于删除重复信息、纠正存在的错误,从而提高数据质量。
6.2.1
数据清洗概述一致性检查
一致性检查是根据每个变量的合理取值范围和相互关系,检查数据是否合乎要求,发现超出正常范围、逻辑上不合理或者相互矛盾的数据。例如,体重出现了负数,性别中除了“Male”、“Female”还出现了数字“25”等,这些都应被视为超出正常值域范围。
一般计算机软件都能够自动识别每个变量中超出范围的取值,并列出调查对象代码、变量代码、变量名及超出范围的取值,这样做可以系统地检查每个变量。
6.2.1
数据清洗概述2.无效值和缺失值的处理估算:用某个变量的样本均值、中位数或众数代替无效值和缺失值,另一种方法是根据调查对象对其他问题的答案,通过变量之间的相关分析或逻辑推论进行估计。整例删除:剔除含有缺失值的样本,只适合关键变量缺失,或者含有无效值或缺失值的样本比重很小的情况。变量删除:如果某一变量的无效值和缺失值很多,而且该变量对于所研究的问题不是特别重要,则可以考虑将变量删除,这种做法减少了供分析用的变量数目,但没有改变样本量。成对删除:用特殊码(通常是9、99、999等)表示无效值和缺失值,同时保留数据集中的全部变量和样本。
6.2.2数据清洗概述1.预处理阶段
预处理阶段主要工作内容有两点:一个是将数据导入处理工具,常见的有导入数据库,如果数据量大,可以采用文本文件存储。另外一个就是分析原始数据,这里包含两个部分:一是看元数据,包括字段解释、数据来源、代码表等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式,对数据本身有一个直观的了解,并且初步发现一些问题,为之后的处理做准备。
6.2.2数据清洗概述2.缺失值清洗缺失值是最常见的数据问题,处理方式多按照以下三步进行:确定缺失值范围:对每个字段都计算其缺失值比例,然后按照缺失比例和字段重要性,分别制定策略;去除不需要的字段:将缺失比例较高的字段直接整例删除,建议删除前进行数据备份,或者在小规模数据上试验通过后再处理全量数据;填充缺失内容:某些缺失值可进行填充,方法有以下三种:以业务知识或经验推敲填充缺失值以同一指标的计算结果(均值、中位数、众数等)填充缺失值以不同指标的计算结果填充缺失值
6.2.2数据清洗概述3.格式内容清洗
如果数据是由系统日志而来,那么通常在格式和内容方面,会与元数据的描述一致,而如果数据是由人工手记或用户填写而来,则有很大可能性在格式和内容上存在问题,简单来说,格式内容问题有以下几类:时间、日期、数值、全半角等显示格式不一致:这种问题通常与输入端有关,在整合多源数据时也有可能遇到,将其处理成一致的某种格式即可;内容中有不该存在的字符:某些内容可能只包括一部分字符,例如:性别是“男”或“女”,身份证号是数字+字母,如果出现姓别中出现数字符号、身份证号中出现汉字等问题,这种情况需要以半自动校验人工方式来找出可能存在的问题,并去除不需要的字符;内容与该字段应有内容不符:姓名写了性别,身份证号写了手机号等等,均属这种问题。
6.2.2数据清洗概述4.逻辑错误清洗
这部分工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果与事实偏差太大,主要包含以下几个步骤:数据去重:所谓去重,就是删除掉重复的记录信息。将去重放在格式内容清洗之后,这样做的好处是可以通过对比快速确定正确信息;去除不合理值:针对不合理值,常用的方法就是按照缺失值处理,另外,通过箱型图可快速发现不合理值;去除不可靠的字段值:如果在填写数据时由于人为因素导致填写错误,那么可通过该步骤来清除;对来源不可靠的数据重点关注:如果数据来源不能确定,则该数据应该及时清除或重新获取。
6.2.2数据清洗概述5.多余数据清洗
在清洗不需要的数据时,需要人们尽可能多地收集数据,并应用于模型构建中。但是有可能在实际开发中字段属性越多,模型地构建就会越慢,因此有时需要将不必要的字段删除,以达到最好的模型效果。
6.2.2数据清洗概述6.关联性验证
如果数据有多个来源,那么有必要进行关联性验证,例如,某位顾客曾通过电话咨询过商品信息,同时也可以在实体店试用记录中查找到该用户的基本信息,那么,两条记录可通过顾客姓名和手机号关联,然后进行调整或去除数据。
6.3数据规约
对大规模数据库内容进行复杂的数据分析通常要耗费大量的时间,数据规约技术可帮助从原有的庞大数据集中获得一个精简的数据集合,并使这一精简数据集保持原有数据集的完整性,这样在精简数据集上进行数据分析显然效率更高,并且分析出来的结果与使用原有数据集所获得结果基本相同。数据规约标准为:用于数据规约的时间不应当超过或“抵消”在规约后的数据上挖掘节省的时间规约得到的数据比原数据小得多,但可以产生相同或几乎相同的分析结果。
6.3.1维规约逐步向前选择:从一个空属性集开始,该集合作为属性子集的初始值,每次从原属性集中选择一个当前最优的属性添加到属性子集中,迭代地选出最优属性并添加,直至无法选出最优为止。2.逐步向后删除:从一个拥有所有属性的属性集开始,该集合是属性子集的初始值,每
次从当前子集中选择一个当前最差的属性并将其从属性子集中删除,迭代地选出最差属性并删除,直至无法选出最差为止。3.向前选择与向后删除结合:可以将向前选择和向后删除的方法结合在一起,每一步选择一个最好的属性,并在剩余属性中删除一个最差的属性。
6.3.2
维规约主成分分析
在很多情况下,变量之间存在一定的相关关系,这种相关关系,可以解释为变量之间有重叠。主成分分析(PrincipalComponentAnalysis,PCA)是指使用较少的变量去解释原始数据中的大部分变量,即将许多相关性很高的变量转化成彼此相互独立或不相关的变量。具体来说,PCA就是从原始的空间中顺序地找一组相互正交的坐标轴,其中,第一个坐标轴选择的是原始数据中方差最大的方向,第二个坐标轴选取的是与第一个坐标轴正交的平面中方差最大的,以此类推,直到得到n个这样的坐标轴2.合并属性
合并属性就是将一些旧属性合并为新属性,例如初始属性集为{A1,A2,A3,A4,B1,B2,B3,C},然后将{A1,A2,A3,A4}合并为属性A,将{B1,B2,B3}合并为B,因此规约后属性集变为{A,B,C}。
6.3.2离散化方法离散化方法可用于数据转换。把连续型数据转换为离散型数据一般包含两个子任务:判断需要多少个离散型数据;如何把连续型数据映射到离散型数据上。第一步,先对连续型数据进行排序,然后指定n-1个点把数据分为n个区间;第二步,把落在同一区间内的所有连续型数据都映射到相同的离散型数据上。因此,离散化问题就变为如何划分区间的问题。
分箱方法也可用于离散化。所谓分箱,就是把数据按照特定的规则进行分组,实现数据的离散化,增强数据稳定性,减少过拟合风险。
6.4数据标准化
在进行数据分析之前,通常要收集大量不同的相关指标,每个指标的性质、量纲、数量级、可用性等特征均可能存在差异,导致我们无法直接用其分析研究对象的特征和规律。当各指标间的水平相差很大时,如果直接用指标原始值进行分析,数值较高的指标在综合分析中的作用就会被放大,相对地,会削弱数值水平较低的指标的作用。
比如,在评价不同时期的物价指数时,较低价格的蔬菜和较高价格的家电的价格涨幅都可以被纳入其中,但是由于它们的价格水平差异较大,如果直接用其价格做分析,会使价格水平较高的家电在综合指数中的作用被放大。因此,为了保证结果的可靠性,需要对原始指标数据进行变换处理,使不同的特征具有相同的尺度。
数据标准化是指将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
6.4.1数据标准化的概念在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。在不同的问题中,标准化的意义不同:在回归预测中,标准化是为了让特征值有均等的权重;在训练神经网络的过程中,通过将数据标准化,能够加速权重参数的收敛;主成分分析中,需要对数据进行标准化处理。默认指标间权重相等,不考虑指标间差异和相互影响。
6.4.2数据标准化的方法目前数据标准化方法有很多,大概可以分为:直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,而且在数据标准化方法的选择上,还没有通用的法则可以遵循。常见的方法有:min-max标准化(min-maxnormalization)、log函数转换、atan函数转换、z-score标准化(zero-menanormalization,此方法比较常用)、模糊量化法。经过标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
6.4.2数据标准化的方法
6.4.2数据标准化的方法
6.4.2数据标准化的方法
6.4.2数据标准化的方法
6.4.2数据标准化的方法
6.5本章小结我们简单回顾一下本章内容。
在6.1节中,我们首先简单介绍了爬虫相关的基础知识,如HTTP基本原理、Xpath和正则表达式等,学习这些工具,可有效提高所爬取数据的效率和质量,其后,我们主要介绍了Scrapy爬虫框架的基本原理和工作流程,并提供了爬取链家网址北京二手房信息的实例。
在6.2—6.4节中,我们依次介绍了常用的数据清洗、数据规约以及数据标准化等相关知识,在大数据分析时,原始数据难免存在重复、缺失以及相互冲突等现象,通过数据清洗可有效提高数据可用性,其后根据数据分析的目标,选择合适的数据规约和数据标准化方法,从而提高后续数据分析的准确性和效率。
6.6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 儿童医院装修合同注意事项
- 宠物食品快递配送合同
- 医院耳鼻喉科改造合同样本
- 投资融资居间合同模板
- 亲子乐园石膏吊顶装修合同
- 农业现代化项目居间合同
- 城市绿化废渣运输合同
- 学校实验室改造精合同
- 写字楼装修合同参考模板
- 建筑工程合同课程设计
- 2024年肥胖症诊疗指南要点解读课件
- 期中 (试题) -2024-2025学年译林版(三起)英语三年级上册
- Module8 Unit1 She goes swimming(教学设计)-2023-2024学年外研版(一起)英语二年级上册
- 外研版小学英语六年级上册教学反思全册
- 第三单元阅读综合实践教学课件 七年级语文上册同步课堂(统编版2024)
- 2024秋国家开放大学《形势与政策》大作业参考答案 二
- DB65-T 4771-2024 和田玉(碧玉)分级规范
- 路灯基础现浇混凝土检验批质量验收记录
- 10.1国庆节演讲峥嵘七十五载山河锦绣灿烂课件
- 银行领导学习二十届三中全会精神心得体会
- 第6课 Flash引导动画课件 2024-2025学年人教版初中信息技术八年级上册
评论
0/150
提交评论