三、数据采集与预处理
1 数据采集
1.1数据采集概念
数据采集,又称“数据获取”,是数据分析的入口,也是数据分析过程中相当重要的一个环节,它通过各种技术手段把外部各种数据源产生的数据实时或非实时地采集并加以利用
1.2数据采集的三大要点
- 全面性
- 多维性
- 高效性
1.3数据采集的数据源
- 传感器数据 支持图片、音频、视频等文件或附件的采集工作。
- 互联网数据 借助于网络爬虫实现,爬虫数据采集方法可以将非结构化数据从网页中抽取出来,将其存储为统一的本地数据文件,并以结构化的方式存储。 支持图片、音频、视频等文件或附件的采集,附件与正文可以自动关联
- 日志文件
- 企业业务系统数据 企业可以借助于ETL(Extract-Transform-Load)工具,把分散在企业不同位置的业务系统的数据,抽取、转换、加载到企业数据仓库中,以供后续的商务智能分析使用
1.4数据采集方法
- 系统日志采集 Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。
Flume的三大核心组件:
Source:数据源
Channel:临时存储数据的管道
Sink:目的地
注意:无数据块(block)
- 分布式消息订阅分发 Kafka是一种具有代表性的分布式消息订阅分发产品。 Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。 Kafka的架构包括以下组件: 话题(topic)、生产者(Producer)、消费者(Consumer)、消息中心(Broker)、服务代理
注意:有话题
- ETL 1.ETL是英文Extract-Transform-Load的缩写,常用于数据仓库中的数据采集和预处理环节。 2.ETL从原系统中抽取数据,并根据实际商务需求对数据进行转换,并把转换结果加载到目标数据存储中。 3.Kettle是一款国外开源的ETL工具,使用Java语言编写,可以在Windows、Linux、Unix上运行,数据抽取高效、稳定。
- 网络数据采集 通过网络爬虫或网站公开应用程序编程接口等方式从网站上获取数据信息。
1.5 网络爬虫
1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成部分。网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间亦可以互相通信。
2.组成:网络爬虫由控制节点、爬虫节点和资源库构成。
3.类型:
- 通用网络爬虫
爬行策略:深度优先策略和广度优先策略。
- 聚焦网络爬虫
过滤与主题无关的链接,保留有用的链接。
爬行策略:基于内容评价的爬行策略、基于链接结构评价的爬行策略、基于增强学习的爬行策略和基于语境图的爬行策略。
- 增量式网络爬虫
只爬行新产生的或者已经发生变化的网页,不重新下载没有发生变化的页面。
有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。
目标:保持本地页面集中存储的页面为最新页面和提高本地页面集中页面的质量。
爬行策略:广度优先策略和PageRank优先策略等。
- 深层网络爬虫
包含6个基本功能模块(爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS控制器)和两个爬虫内部数据结构(URL列表、LVS表)。
4.Scrapy爬虫
(1)Scrapy是一套基于Twisted的异步处理框架,是纯Python实现的爬虫框架。
Scrapy运行于Linux/Windows/MacOS等多种环境,具有速度快、扩展性强、使用简便等特点。
Scrapy可以在本地运行,也能部署到云端实现真正的生产级数据采集系统。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
(2)Scrapy体系架构:
- Scrapy引擎(Engine)
- 爬虫(Spiders)
- 下载器(Downloader)
- 调度器(Scheduler)
- 项目管道(Item Pipeline)
- 下载器中间件(Downloader Middlewares)
- 爬虫中间件(Spider Middlewares)
- 调度器中间件(Scheduler Middlewares)
(3)Scrapy工作流
①Scrapy引擎从调度器中取出一个链接(URL)用于接下来的抓取;
②Scrapy引擎把URL封装成一个请求并传给下载器;
③下载器把资源下载下来,并封装成应答包;
④爬虫解析应答包;
⑤如果解析出的是项目,则交给项目管道进行进一步的处理;
⑥如果解析出的是链接(URL),则把URL交给调度器等待抓取。
5.反爬机制
(1)原因:
①在大数据时代,数据是十分宝贵的财富,很多企业不愿意让自己的数据被别人免费获取,因此,很多企业都为自己的网站运用了反爬机制,防止网页上的数据被爬走;
②简单低级的网络爬虫,数据采集速度快,伪装度低,如果没有反爬机制,它们可以很快地抓取大量数据,甚至因为请求过多,造成网站服务器不能正常工作,影响了企业的业务开展。
(2)反爬机制也是一把双刃剑,一方面可以保护企业网站和网站数据,但是,另一方面,如果反爬机制过于严格,可能会误伤到真正的用户请求,也就是真正用户的请求被错误当成网络爬虫而被拒绝访问。如果既要和“网络爬虫”死磕,又要保证很低的误伤率,那么又会增加网站研发的成本。
2 数据清洗
2.1数据清洗的内容
(1)缺失值处理
- 估算
- 整例删除
- 变量删除
- 成对删除
(2)异常值处理
对象:超出正常范围、逻辑上不合理或者相互矛盾的数据。
(3)数据类型转换
(4)重复值处理
2.2 数据清洗的注意事项
- 数据清洗时优先进行缺失值、异常值和数据类型转换的操作,最后进行重复值的处理。
- 在对缺失值、异常值进行处理时,要根据业务的需求进行处理,这些处理并不是一成不变的,常见的填充包括:统计值填充(常用的统计值有均值、中位数、众数)、前/后值填充(一般使用在前后数据存在关联,比如数据是按照时间进行记录的)、零值填充。
- 在数据清洗之前,最为重要的对数据表的查看,要了解表的结构和发现需要处理的值,这样才能将数据清洗彻底。
- 数据量的大小也关系着数据的处理方式。如果总数据量较大,而异常的数据(包括缺失值和异常值)的量较少时,可以选择直接删除处理,因为这并不太会影响到最终的分析结果;但是,如果总数据量较小,则每个数据都可能影响分析的结果,这个时候就需要认真去对数据进行处理(可能需要通过其他的关联表去找到相关数据进行填充)。
- 在导入数据表后,一般需要将所有列一个个地进行清洗,来保证数据处理的彻底性,有些数据可能看起来是正常可以使用的,实际上在进行处理时可能会出现问题(比如某列数据在查看时看起来是数值类型,但是其实这列数据的类型却是字符串,这就会导致在进行数值操作时无法使用)。
3 数据转换
3.1数据转换策略
- 平滑处理
- 聚集处理
- 数据泛化处理
- 规范化处理
- 属性构造处理
3.2 平滑处理
1.分箱
(1)等高方法:每个箱子中元素的个数相等。
这里给出一个实例介绍分箱方法。
假设有一个数据集X={4,8,15,21,21,24,25,28,34},这里采用基于平均值的等高分箱方法对其进行平滑处理,则分箱处理的步骤如下:
(1)把原始数据集X放入以下三个箱子:
箱子1:4,8,15
箱子2:21,21,24
箱子3:25,28,34
(2)分别计算得到每个箱子的平均值:
箱子1的平均值:9
箱子2的平均值:22
箱子3的平均值:29
(3)用每个箱子的平均值替换该箱子内的所有元素:
箱子1:9,9,9
箱子2:22,22,22
箱子3:29,29,29
(4)合并各个箱子中的元素得到新的数据集{9,9,9,22,22,22,29,29,29}。
此外,还可以采用基于箱子边界的等高分箱方法对数据进行平滑处理。
利用边界进行平滑时,对于给定的箱子,其最大值与最小值就构成了该箱子的边界,利用每个箱子的边界值(最大值或最小值)可替换该箱子中的所有值。
这时的分箱结果如下:
箱子1:4,4,15
箱子2:21,21,24
箱子3:25,25,34
合并各个箱子中的元素得到新的数据集{4,4,15,21,21,24,25,25,34}。
(2)等宽方法:每个箱子的取值间距(左右边界之差)相同。
2.回归
3.聚类
3.3 规范化处理
1. Min-Max规范化
x=(待转换属性值−属性最小值)/(属性最大值−属性最小值)
2.Z-Score规范化
目的:将不同量级的数据统一转化为同一个量级,统一用计算出的Z-Score值衡量,以保证数据之间的可比性。
Z =(待转换属性值−属性平均值)/属性标准差
假设我们要比较学生A与学生B的考试成绩,A的考卷满分是100分(及格60分),B的考卷满分是700分(及格420分)。
很显然,A考出的70分与B考出的70分代表着完全不同的意义。
但是从数值来讲,A与B在数据表中都是用数字70代表各自的成绩。
那么如何能够用一个同等的标准来比较A与B的成绩呢?
Z-Score就可以解决这一问题。
假设A班级的平均分是80,标准差是10,A考了90分;
B班的平均分是400,标准差是100,B考了600分。
通过上面的公式,我们可以计算得出,A的Z-Score是1(即(90-80)/10),B的Z-Socre是2(即(600-400)/100),因此,B的成绩更为优异。
若A考了60分,B考了300分,则A的Z-Score是-2,B的Z-Score是-1,这时,A的成绩比较差。
优点:不需要知道数据集的最大值和最小值,对离群点规范化效果好。
缺陷:首先,Z-Score对于数据的分布有一定的要求,正态分布是最有利于Z-Score计算的。
其次,Z-Score消除了数据具有的实际意义,A的Z-Score与B的Z-Score与他们各自的分数不再有关系。
因此,Z-Score的结果只能用于比较数据间的结果,数据的真实意义还需要还原原值。
3.小数定标规范化
x=待转换属性值/(10的k次方)
假设属性的取值范围是-957~924,则该属性绝对值的最大值为957,很显然,这时k=3。当属性的值为426时,对应的转换结果如下: 426/10的3次方 = 0.426
小数定标法的优点是直观简单,缺点是并没有消除属性间的权重差异。
4 数据脱敏
4.1数据脱敏原则
(1)保持原有数据特征
(2)保持数据之间的一致性
(3)保持业务规则的关联性
(4)多次脱敏之间的数据一致性
4.2数据脱敏方法
- 数据替换。
- 无效化。
- 随机化。
- 偏移和取整。
- 掩码屏蔽。
- 灵活编码。