数据采集与预处理技术应用安俊秀课后参考答案_第1页
数据采集与预处理技术应用安俊秀课后参考答案_第2页
数据采集与预处理技术应用安俊秀课后参考答案_第3页
数据采集与预处理技术应用安俊秀课后参考答案_第4页
数据采集与预处理技术应用安俊秀课后参考答案_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章1.简述什么是大数据?维基百科对大数据的描述如下:大数据又称巨量数据、海量数据。是指用传统数据处理应用软件不足以处理她们大或复杂的数据集的术语。麦肯锡全球研究所给出的定义是:一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。2.大数据有什么特点?大数据的特点可以概括为六个方面,第一,数据量大(Volume),数据从TB级别跃升到PB级别。第二,数据类型多样(Variety),互联网中有大量的网络日志、视频、图片等信息。第三,数据处理速度快(Velocity),大数据往往需要在秒级时间范围内处理各种类型的数据信息。第四,数据价值密度低(Value),现实中获取的大量数据是未经过处理的,它的价值是无效或者是很低的,大数据技术就是在这些数据中有用的信息提取出来,挖掘出对未来趋势有价值的数据。第五,准确性(Veracity),数据处理结果要保证一定的准确性和可信赖度。第六,复杂(Complexity),由于数据大量,数据类型多样,产生速度快,对于数据的处理和分析难度大。3.简述数据分析的基本流程,并说明各流程完成的任务?数据分析的基本步骤包括明确思路,制定计划、数据收集、数据处理、数据分析、数据显示和报告撰写:1)明确目的,制定计划。清晰的数据分析思路是有效进行数据分析的首要条件,清晰的思路也是整个数据分析过程的起点。思路清晰,可为资料的收集、处理和分析提供明确的指导。想清楚之后,就可以开始制订计划,只有思路清晰,方案才能确定,这样分析才会更科学、更有说服力。2)数据收集。数据收集是按照一定的数据分析框架,收集与项目相关数据的过程。数据收集为数据分析提供资料和依据。数据收集的类型包括一手数据和二手数据。一手数据是指能直接获得的数据,如公司内部数据库;二手数据是指需要加工整理后获得的数据,如公开出版物中的数据。收集资料的来源主要有数据库、公开出版物、互联网、市场调查等。3)数据处理。数据处理就是将项目所需要的资料收集进行处理,形成适合数据分析的方式。因为数据质量会直接影响数据分析的效果,所以它是数据分析前必不可少的阶段。数据处理的基本目标就是从大量、混乱、难懂的数据中提取并导出有价值的、有意义的数据。数据处理主要包括数据清洗、数据转换、数据提取、数据计算等处理方法。4)数据分析。数据分析就是运用适当的分析方法和工具,对收集到和处理过的数据进行分析,提取出有价值的信息,形成有效结论的过程。如今,许多企业会选择使用专业的数据分析工具,并根据自己的需要进行分析。Smartbi是国内知名品牌,主要从事商业智能BI和大数据BI分析平台软件产业的研发与服务。能够满足企业级最终用户报告、数据可视化分析、自助探索分析、数据挖掘建模、人工智能智能分析等大数据分析需求。5)数据显示。通过数据分析,隐藏在数据中的关系和规律将逐渐出现。此时,数据显示模式的选择尤为重要。数据最好是以表格和图形的形式呈现,即用图表说话。6)报告撰写。数据分析报告是对整个数据分析过程的总结与呈现。数据分析的原因、过程、结果和建议通过报告完整呈现,供决策者参考。一个好的数据分析报告,不仅要有明确的结论、建议和解决方案,而且要图文结合、有层次,可以让读者一目了然。4.列举几例数据采集的应用场景?1、图像数据采集图像数据采集是指利用计算机对图像进行采集、处理、分析和理解,以识别不同模式的目标和对象的技术,是深度学习算法的一种实践应用。2、音频数据采集语音识别技术也被称为自动语音识别(AutomaticSpeechRecognition,ASR),可将人类的语音中的词汇内容转换为计算机可读的输入,例如二进制编码、字符序列或者文本文件。3、视频数据采集视频是动态的数据,内容随时间而变化,声音与运动图像同步。通常视频信息体积较大,集成了影像、声音、文本等多种信息。视频的获取方式包括网络下载、从VCD或DVD中捕获、从录像带中采集、利用摄像机拍摄等,以及购买视频素材、屏幕录制等。5.数据预处理的工具有哪些?数据预处理是指对原始数据进行基本运算、统计和处理,包括数据导入、统计分析、因子分析法、方差分析、假设检验等,以便后续建模进行研究。目前主要有Python,ETL工具Kettle,Pig,OpenRefine,AmazonGlueDataBrew等数据预处理工具。第2章1.Java和Python用于大数据开发的优点是什么?现在比较受欢迎的大数据开发语言是Java与python。一些主流的大数据框架都离不开Java平台,如Hadoop、Spark、Kafka等,Java在大数据生态中具有重要的地位。而Python开发速度快,代码简洁,拥有丰富的类库支持,开发人员能够利用这些库进行数据采集和数据处理。并且很多框架都支持Python,如Hadoop等。2.MySQL有哪些优点?SQL是所有关系型数据库的通用语言。SQL不是为某个数据库特定设计的语言,而是一种绝大多数数据库都遵循的标准语言,它具有强大的可移植性,只需稍改一下就可以用来操作别的数据库。简单易学。它的语句都是由一些容易理解的词汇组成,语法接近自然语言,这使得用户很容易就能掌握SQL。功能强大。其功能不仅仅是查询,而是包括数据的插入、删除、修改以及数据库定义等一系列功能,可以进行非常复杂和高级的数据库操作。3.Hadoop的三种运行模式分别适用于哪些场景?本地模式不需要启用单独进程,直接可以运行,通常在测试和开发时使用。伪分布式模式基本等同于完全分布式模式,但只有一个节点,通常仅用于测试,很少用于生产环境。完全分布式模式下多个节点一起运行,在生产环境中使用。4.简述MapReduce程序执行过程?在任务开始前,首先调用类库,将输入文件分为多个分片。将这些分片分配给Mapper。Mapper读取自己所属的文件分片,将每一条输入数据转换为<key,value>键值对,使用Map函数对每一个键值对进行处理,得到一个新的<key,value>键值对,作为中间结果缓存在当前节点。中间结果经过一些处理后传递给Reducer。Reducer将相同key对应的所有取值合并,得到<key,list(value)>键值组,并使用Reduce函数进行计算,得到最终结果并将其输出。第3章1.Flume的作用是什么?Flume是一个分布式、高可靠、高可用的海量日志采集、聚合、传输系统。支持在日志系统中定制各类数据发送方,也能够对数据进行简单处理,并拥有将数据写到各种数据接收方的能力。2.Flume的核心组件包括什么?它们的作用各是什么?Flume包括Agent、Source、Channel、Sink、Event五个核心组件。Agent是Flume流的基础部,每台机器中运行一个Agent。它主要包括Source、Channel、Sink三大组件,Agent利用这些组件将数据以事件的形式从一个节点传输到另一个节点。Source的作用是接收数据,Source组件可以处理各种类型的日志数据。Sink的作用是不断查询Channel中的事件并移除它们,Sink将移除的事件批量写入到存储系统或发往其他FlumeAgent。Channel是位于Source和Sink之间的缓冲区。Channel能够使Source和Sink以不同的速率工作,Channel可以同时接收多个Source的事件,也可以将事件发送到多个Sink中。Event使Flume数据的基本传输单元,Flume将数据以Event的形式从数据源传递到目的地。3.MemoryChannel和FileChannel有什么不同?分别在什么情况下使用?Flume自带了两种Channel,MemoryChannel和FileChannel。其中MemoryChannel是内存中的队列。MemoryChannel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么MemoryChannel就不应该使用,因为程序出现异常可能会导致数据丢失。FileChannel将所有事件写到磁盘。因此在程序出现异常的情况下不会丢失数据。4.Flume数据的基本传输单元是什么?它具有怎样的结构?Event使Flume数据的基本传输单元。它由Header和Body两部分组成,Header通常用来存放该Event的一些属性,属性以键值对的方式存储,Body用来存放数据。第4章1.简述什么是Kafka,Kafka的作用是什么?Kafka是一个分布式的基于发布/订阅模式的消息队列,是一个开源的分布式事件流平台。用于高性能数据管道、流分析、数据集成和关键任务应用。它可以发布或订阅流数据,类似于消息队列或者企业消息系统,它也可以容错存储记录的数据流,它还可以实时的处理记录的数据流。2.Kafka和Flume通常如何分工?Flume不直接提供数据持久化和实时计算,其功能侧重于数据采集和传输,Flume追求的是数据来源和数据流向的多样性,适合多个生产者的场景,通常用来生产和收集数据。而Kafka提供对流的实时计算功能,Kafka追求的是高吞吐,高负载,适合多消费者场景,通常用来消费数据。一般情况下,服务器的日志数据由Flume采集,Flume再将采集到的数据传输给Kafka。3.Zookeeper中保存了Kafka哪些数据?Kafka利用Zookeeper保存元数据信息,元数据信息包括节点信息、主题信息、集群信息、分区信息、副本信息等。4.简述Kafka生产者和消费者的工作流程?使用生产者向Kafka集群发送消息时,需要事先指定消息的主题。生产者首先会使用序列化器会把要发送的数据序列化成字节数据,以便在网络上传输。随后数据交给分区器处理,分区器用于确定消息要发往哪个分区。一般情况下,生产者采用默认分区器,将消息均匀分布到主题的所有分区上,某些特点场景下,生产者也可以使用自定义分区器,根据业务规则来决定把消息发往不同分区。确定主题和分区后,生产者将数据放入缓冲区,由一个独立的线程负责把数据分批次包装成一个个Batch并依次发送给相应的Broker。服务器收到响应时会返回响应信息,如果成功则返回元数据,如果失败则按照规则重传。图4-7显示的是生产者发送数据的整个过程。消费者能够订阅一个或多个主题,消费者以拉(Pull)方式主动向Kafka集群获取数据。消费者能够通过操作偏移量(Offset)来标记读取的位置。偏移量是一个不断递增的整数值,由消费者提交到Kafka或Zookeeper中保存,消费者的关闭不会使读取状态丢失。每一个消费者都属于某一个消费者组,每个消费者组由组id唯一标识。需要保证每个分区的数据只能由消费者组中的一个消费者消费。5.为什么要将每个Topic分成多个Partition?主题是对消息的分类,生产者和消费者面向的都是一个主题,一个主题又被分为多个分区,每个分区都是一个有序队列。topic是逻辑的概念,而partition是物理的概念,对用户来说是透明的。为了将一个主题分布到多个服务器中,以实现数据冗余和扩展性,会根据分区规则选择把消息存储到不同分区中,只要如果分区规则设置的合理,那么所有的消息将会被均匀的分布到不同的分区中,这样就实现了负载均衡和水平扩展。另外,多个订阅者可以从一个或者多个分区中同时消费数据,以支撑海量数据处理能力。第5章1.简述Scribe中的三大存储类型及其定义。①file存储配置:将日志数据信息写入到文件或网络文件系统(NetworkFileSystem,NFS)中。②Network存储配置:Network存储会向其他Scribe服务器发送消息,Scribe必须创建一个链接并保证它的开启状态以确保Network能够发送信息(如果产生错误信息,或机器故障,将会创建一个新的链接)。正常情况下,Network存储所在的Scribe会根据当前缓存中存在多少条信息处于等待发送状态,而分批次发送这些信息。③Buffer存储:Buffer存储是最常用的存储类型,该存储有两个子存储:PrimaryStore和SecondaryStore。日志数据信息会优先写入到PrimaryStore中,如果出现异常状态,才会存储到SecondaryStore中。待恢复正常后,存储到SecondaryStore中的信息会被复制到PrimaryStore中。SecondaryStore中仅支持file类型和null类型的存储。2.简述Chukwa的工作原理。首先在每个数据的生成处,Chukwa需要配置相应的Agent采集所需的数据。所采集到的数据各自有不同的数据类型,这些数据类型需要绑定不同的Adaptor,并在配置文件设置数据类型的相关信息,对于采集到的数据,通常需要一个存储空间用于存放这些数据,为此Chukwa引入了Collectors组件,该组件的作用是先将小数据进行整合与归总,然后存放于集群之中。然后,Chukwa提供了Demux和Archive两个主要组件要对来自数据源的数据进行具体的分析操作。数据被获取、处理之后,还需要考虑相关的展示问题,CHUKWA会引入HICC是一个有关数据展示的组件,可以使用数组、曲线图、柱状图等图形对数据进行展示。3.简述Splunk的几大特点。①自动化:Splunk在数据的导入和呈现方面更加自动化,只要以Json格式将所获取的数据写入Splunk所监控的文件,它就可以自动对字段做切分,切分的方式也可以由用户自行设置。②跨平台性:Splunk是一个可以在所有主流操作系统上运行的独立软件包,用户只需根据自身所用的操作系统做选择对应的安装包,然后下载并安装即可。③数据源的随意性:Splunk可以从任何数据源实时索引任何类型的计算机数据。可以在Splunk中指向用户的服务器或网络设备的系统日志、设置WMI轮询、监视实时日志文件,并能够监视指定的文件系统或Windows注册表中的更改,或安排脚本获取系统指标。4.简述Fluentd采用JSON格式的优点。JSON(JavaScriptObjectNotation)作为一种轻量级的数据交换格式,它基于欧洲计算机协会制定的Js规范,采用了独立于编程语言的文本格式来存储表示数据,因此能够适用与大多数据的计算机编程场景。JSON的优点在于,它符合程序员的编写和阅读习惯,也易于机器的解析和生成,在网络传输效率上也优于其他的数据格式。第6章1.爬取豆瓣电影相关信息,并写出实验步骤及遇到的问题。frombs4importBeautifulSoup#网页解析,获取数据importre#正则表达式,进行文字匹配importurllib.request,urllib.error#制定URL,获取网页数据importxlwt#进行excel操作importsqlite3#进行SQLite数据库操作defmain():baseurl="/top250?start="#1.爬取网页datalist=getData(baseurl)savepath="豆瓣电影Top250.xls"dbpath="movie1.db"#3.保存数据(保存数据时,若同时通过data[]保存会使data[]范围超出。我们可以令外设置一个列表,使其保存内容与datalist一致。每个保存调用一个列表)saveData(datalist,savepath)#保存到excel#saveData2DB(datalist,dbpath)#保存到数据库#影片详情链接的规则findLink=pile(r'<ahref="(.*?)">')#创建正则表达式对象,表示规则(字符串的模式)#影片图片findImgSrc=pile(r'<img.*src="(.*?)"',re.S)#re.S让换行符包含在字符中#影片片名findTitle=pile(r'<spanclass="title">(.*)</span>')#影片评分findRating=pile(r'<spanclass="rating_num"property="v:average">(.*)</span>')#找到评价人数findJudge=pile(r'<span>(\d*)人评价</span>')#找到概况findInq=pile(r'<spanclass="inq">(.*)</span>')#找到影片的相关内容findBd=pile(r'<pclass="">(.*?)</p>',re.S)#爬取网页defgetData(baseurl):datalist=[]foriinrange(0,10):#调用获取页面信息的函数,10次print("第{}页网页准备开始爬取:".format(i+1))url=baseurl+str(i*25)html=askURL(url,i)#保存获取到的网页源码#2.逐一解析数据soup=BeautifulSoup(html,"html.parser")print("开始解析第{}页源代码:".format(i+1))m=0#查找符合要求的字符串,形成列表foriteminsoup.find_all('div',class_="item"):#print(item)#测试:查看电影item全部信息data=[]#保存一部电影的所有信息item=str(item)#影片详情的链接link=re.findall(findLink,item)[0]#re库用来通过正则表达式查找指定的字符串data.append(link)#添加链接#添加图片链接imgSrc=re.findall(findImgSrc,item)[0]data.append(imgSrc)titles=re.findall(findTitle,item)#片名可能只有一个中文名,没有外国名if(len(titles)==2):ctitle=titles[0]#添加中文名data.append(ctitle)otitle=titles[1].replace("/","")#去掉无关的符号data.append(otitle)#添加外国名else:data.append(titles[0])data.append('')#外国名字留空rating=re.findall(findRating,item)[0]data.append(rating)#添加评分judgeNum=re.findall(findJudge,item)[0]data.append(judgeNum)#提加评价人数#概述inq=re.findall(findInq,item)iflen(inq)!=0:inq=inq[0].replace("。","")#去掉句号data.append(inq)#添加概述else:data.append("")#留空#相关信息bd=re.findall(findBd,item)[0]bd=re.sub('<br(\s+)?/>(\s+)?',"",bd)#去掉<br/>bd=re.sub('/',"",bd)#替换/data.append(bd.strip())#去掉前后的空格datalist.append(data)#把处理好的一部电影信息放入datalistprint("第{}条电影数据已处理".format(i*25+m+1))m+=1returndatalist#得到指定一个URL的网页内容defaskURL(url,i):head={#模拟浏览器头部信息,向豆瓣服务器发送消息"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.122Safari/537.36"}#用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容)request=urllib.request.Request(url,headers=head)#获取网页链接html=""try:response=urllib.request.urlopen(request)#get请求html=response.read().decode("utf-8")#print(html)excepturllib.error.URLErrorase:#捕获错误ifhasattr(e,"odec"):print(e.code)ifhasattr(e,"reason"):print(e.reason)print("第{}网页源代码爬取完毕!".format(i+1))returnhtml#保存数据defsaveData(datalist,savepath):print("开始保存数据到excel")book=xlwt.Workbook(encoding="utf-8",style_compression=0)#创建workbook对象sheet=book.add_sheet('豆瓣电影Top250',cell_overwrite_ok=True)#创建工作表col=("电影详情链接","图片链接","影片中文名","影片外国名","评分","评价数","概况","相关信息")foriinrange(0,8):sheet.write(0,i,col[i])#列名foriinrange(0,250):print("第%d条已保存"%(i+1))data=datalist[i]forjinrange(0,8):sheet.write(i+1,j,data[j])#数据book.save(savepath)#保存print("数据已保存到excel")#保存到数据库definit_db(dbpath):print("准备建立数据库")sql='''createtablemovie250(idintegerprimarykeyautoincrement,info_linktext,pic_linktext,cnamevarchar,enamevarchar,scorenumeric,ratednumeric,instroductiontext,infotext)'''#创建数据表conn=sqlite3.connect(dbpath)cursor=conn.cursor()cursor.execute(sql)mit()conn.close()print("数据库已创建完成")defsaveData2DB(datalist,dbpath):init_db(dbpath)conn=sqlite3.connect(dbpath)cur=conn.cursor()#获取游标print("开始将数据保存到数据库")fordataindatalist:forindexinrange(len(data)):ifindex==4orindex==5:continuedata[index]='"'+data[index]+'"'sql='''insertintomovie250(info_link,pic_link,cname,ename,score,rated,instroduction,info)values(%s)'''%",".join(data)print(sql)cur.execute(sql)mit()#提交操作print("本条sql语句已执行")cur.close()#关闭游标conn.close()#关闭数据库print("250条数据已储存到数据库")if__name__=="__main__":#当程序执行时#调用函数main()#init_db("movietest.db")第7章1.简述使用Python进行数据处理的好处?①Python中可以引入NumPy、Pandas、SciPy、Matplotlib等函数库。其中,NumPy库提供了用于存储和处理大型矩阵的函数,Pandas库提供了对数据的读取、存储、异常处理等功能的实现,SciPy库可用于插值、积分、优化、图像处理等,Matplotlib实现了数据的图像化显示②在数据分析过程中,程序员仅仅依靠Python便可以完成数据分析的全过程,而无须引入其他的软件。从而避免了工作环境的复杂化以及软件之间的交互困难。③Python的简易语法又使得程序员能够专注于数据的分析过程,而不用深究于代码的语法规则。2.Python数据处理中常用的函数库有哪些,并分别简要说明这些函数库在数据处理时的作用?①NumPy:是Python的一种开源数值计算的扩展,常用于对数组和向量进行计算,用户可以通过NumPy中提供的函数,对数组和向量进行求和、取整、取余等计算操作,以便为后续的数据处理操作打好基础。②Pandas:Pandas提供了大量快速便捷地处理数据的函数和方法。与NumPy不同的是,它纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集所需的工具,Pandas拥有自己独特的数据结构:Series和DataFrame。③SciPy:是一个科学计算库,基于NumPy开发,提供了许多用于优化、统计和信号处理的实用函数。④Matplotlib:是Python的2D图形包,用于绘制各类图形并进行直观展示,使得Python更具可视性和交互性。此外,Matplotlib的输出格式包括了PDF,Postscript,SVG,以及PNG,同时Matplotlib也可直接用于屏幕展示。3.在NumPy中生成数组的方式有哪些?①直接使用np.array()函数生成数组②使用np.array()函数将列表转化为数组③使用np.zeros()函数生成数字全为0的数组④使用np.arange()生成整数数组⑤使用np.linspace()生成等差数组。4.简述Series和DataFrame的区别?Series是一种类似于一维数组的对象。它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成,能保存不同数据类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论