数据采集与处理付东普课后参考答案_第1页
数据采集与处理付东普课后参考答案_第2页
数据采集与处理付东普课后参考答案_第3页
数据采集与处理付东普课后参考答案_第4页
数据采集与处理付东普课后参考答案_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、简要描述数据分析的总体过程答案:数据分析的总体过程,一般是从现实世界或应用系统中进行数据抽取,然后进行数据预处理、数据探索与可视化、机器学习与统计建模、模型校验及应用部署和生成报告。具体如下图所示:2、大数据的特征有哪些?答案:大数据一般具有4V+1O特征:数据量大(Volume)、数据类型繁多(Variety)、数据产生速度快(Velocity)和数据价值密度低(Value),以及基本是在线数据(Online)。3、作为一个数据分析师,需要掌握哪些技能?答案:由于数据分析与数据科学是一个跨学科的领域,涉及学科包括数学与统计、计算机科学、大数据技术等。另外,数据分析师需要与客户沟通需求并交流数据分析结果,因此还需要具有一定的人文素养。总体而言,数据分析师需要掌握以下技能:1)技术性技能:计算机科学。包括:Python编程,Hadoop平台,SQL数据库与编码,ApacheSpark,MachineLearning,andAI,数据可视化,非结构化数据处理2)非技术性技能,包括:求知欲,商业智慧,沟通技巧,团队协作等4、试列出一些数据度量的单位,这些单位之间的数量关系是什么?答案:部分数据度量单位包括:Kilobyte〈KB〉=1024bytes,Megabyte〈MB〉=1024Kilobytes,Gigabyte〈GB〉=1024Megabytes,Terabyte〈TB〉=1024Gigabytes,Petabyte〈PB〉=1024terabytes,Exabyte〈EB〉=1024petabytes;等。每级度量单位之间是1024倍的关系5、根据描述实体的不同,数据的类型都有哪些?答案:描述不同的实体,其数据类型可能不同,可分为:1)类别(Categorical)i)名义(Nominal),即没有大小顺序的类别,如民族、性别、种族、颜色、院系、专业等。ii)序数(Ordinal),即由大小顺序的类别,如成绩等级、行业排名等。2)数字(Numerical)i)离散(Discrete),是指其数值只能用自然数或整数单位计算的数据,如企业个数、职工人数、设备台数等。ii)连续(Continuous),是指一定区间内可以任意取值,其数值是连续不断的,相邻两个数值可作无限分割,即可取无限个数值。如身高、体重、里程等。6、数据预处理过程一般包括哪些技术?答案:主要的数据预处理技术包括数据整合,数据清洗,冗余消除,数据归约等。第二章Python基础1、Python的设计具有很强的可读性,相比其他语言具有的特色语法有:A、交互式B、解释型C、面向对象D、服务端语言答案:ABC2、当知道条件为真,想要程序无限执行直到人为停止的话,可以需要下列哪个选项:A、forB、breakC、whileD、if答案:C3、求比10小且大于或等于0的偶数,例题如下:

x

=

10

while

x:

x

=

x-1

if

x%2!=0:

____

print

(x)A、breakB、continueC、yieldD、return答案:B

4、在Python中,数字类型共包括以下哪几种类型:A、intB、boolC、floatD、complex答案:ACD5、下列字符中对应ASCII码数值最小的是哪个选项:A、BB、aC、kD、M答案:A6、Python3解释器执行not1and1的结果为:A、TrueB、FalseC、0D、1答案:B

解析:7、在信息组织和存储中,最基本的单位是:A、字节(Byte)B、字(Word)C、双字(DoubleWord)D、二进制位(bit)答案:D8、关于下面对unicode作用的描述,正确的是:A、能够使计算机对跨语言的文本进行转换及处理B、能够减少存储大小,节约存储成本C、能够使计算机对跨平台的文本进行转换及处理D、能够使计算机处理文本速度更快答案:AC9、假设,现在有一个UTF-8编码的文件,需要转码成GBK编码的文件,下列操作流程正确的是:A、encode('gbk')--->decode('utf-8')B、encode('utf-8')--->decode('gbk')C、decode('gbk')--->encode('utf-8')D、decode('utf-8')--->encode('gbk')答案:D10、在Python中,字符串s='abc',那么执行表达式s+'d'之后,s的打印结果是什么?A、'abc'B、'abcd'C、'abc+d'D、None答案:A

11、Python解释器执行'abbacabb'.strip('ab')的结果是:A、'aca'B、'ca'C、'c'D、语法错误答案:C

12、现有列表l=[1,2,3,4,5,6,7,8,9],那么python3解释器执行l[1:3]='abc'后执行l[2]的结果是:A、4B、bC、abcD、c答案:B13、在python中,关于reverse方法的说法中,你认为正确的是:A、reverse方法返回新的列表B、reverse方法没有返回值C、reverse方法对列表内的所有元素进行反向排序D、reverse方法只对一级元素进行反向排序答案:BD14、现有代码t=('a'),在Python3解释器中查看type(t)的结果为:A、<class'str'>B、<class'tuple'>C、(class'list')D、(class'set')答案:A

15、现有代码d={},在python3解释器中执行d[([1,2])]='b'得到的结果为:A、TypeError:unhashabletype:'list'B、{([1,2]):'b'}C、{(1):'b'}D、以上说法都不对答案:A

16、Python3解释器执行forxin{'a':'b','c':'d'}:print(x)的结果是什么:A、bcB、acC、bdD、ab答案:B17、Python3解释器执行{1,2,'a'}|{2,3,4}的结果为:A、{2,3,4}B、{1,2,3,4,'a'}C、{1,2,3,4}D、{2,3,4,'a'}答案:B18、Python解释器执行'{0},{2},{1}'.format('a','b','c'):A、'a,b,c'B、'a,c,c'C、'a,c,b'D、'c,c,b'答案:C19、Python解释器执行'-'.join({'a':'b','c':'d'})的结果为:A、'a-c'B、'a-b-c-d'C、'b-d'D、报错答案:A20、Python3解释器执行'AB2C3D'.lower().title()的结果是:A、'Ab2c3d'B、'Ab2C3D'C、'AB2C3D'D、语法错误答案:B

21、Python3解释器执行L=[1,4,3].extend(list())后L的值是:A、[1,4,3]B、[1,4,3,[]]C、[]D、None答案:D22、在Python中,关于copy模块的说法,正确的是:A、copy模块为python的内置模块,用时无需导入B、可以通过变量复制操作代替copyC、copy.copy浅拷贝只拷贝父对象,不会拷贝对象的内部的子对象D、copy.deepcopy深拷贝拷贝对象及其子对象答案:CD23、现有代码t=(1,2),在python3解释器中执行t*3得到的结果为:A、语法错误B、(1,2,1,2,1,2)C、(2,4,2,4)D、以上都不对答案:B24、Python3.X中,分别查询长度为一百万的列表和字典的靠后的元素,哪个速度更快?A、列表快B、字典快C、一样快D、元组快答案:B

25、关于hash函数,下面说法正确的是:A、hash函数提高了数据安全性B、hash函数可以用来对密码进行加密C、hash函数可以用来校验文件的一致性D、上面说的都对答案:D26、Python是一种跨平台、开源、免费的高级动态编程语言。答案:正确27、在Windows平台上编写的Python程序无法在Unix平台运行。答案:错误28、不可以在同一台计算机上安装多个Python版本。答案:错误29、Python变量使用前必须先声明,并且一旦声明就不能再在当前作用域内改变其类型。答案:错误30、在Python3.x中可以使用中文作为变量名。答案:正确31、加法运算符可以用来连接字符串并生成新字符串。答案:正确32、pip命令也支持扩展名为.whl的文件直接安装Python扩展库。答案:正确33、Python代码的注释只有一种方式,那就是使用#符号。答案:错误34、调用函数时,在实参前面加一个符号*表示序列解包。答案:正确

35、字典的“键”必须是不可变的。答案:正确36、已知x为非空列表,那么表达式sorted(x,reverse=True)==list(reversed(x))的值一定是True。答案:错误37、Python集合中的元素不允许重复。答案:正确38、Python字典中的“值”不允许重复。答案:错误39、Python列表中所有元素必须为相同类型的数据。答案:错误40、Python列表、元组、字符串都属于有序序列。答案:正确41、对于列表而言,在尾部追加元素比在中间位置插入元素速度更快一些,尤其是对于包含大量元素的列表。答案:正确42、假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的。答案:正确43、带有else子句的循环,如果因为执行了break语句而退出的话,则会执行else子句中的代码。答案:错误44、在UTF-8编码中一个汉字需要占用3个字节。答案:正确45、元组是不可变的,不支持列表对象的insert()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。答案:正确46、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。答案:错误47、只能对列表进行切片操作,不能对元组和字符串进行切片操作。答案:错误48、Python集合不支持使用下标访问其中的元素。答案:正确49、删除列表中重复元素最简单的方法是将其转换为集合后再重新转换为列表。答案:正确50、对于生成器对象x=(3foriinrange(5)),连续两次执行list(x)的结果是一样的。答案:错误51、Python运算符%不仅可以用来求余数,还可以用来格式化字符串。答案:正确52、表达式{1,3,2}>{1,2,3}的值为True。答案:错误53、定义函数时,即使该函数不需要接收任何参数,也必须保留一对空的圆括号来表示这是一个函数。答案:正确54、定义Python函数时必须指定函数返回值类型。答案:错误55、函数内部定义的局部变量当函数调用结束后被自动删除。答案:正确56、创建只包含一个元素的元组时,必须在元素后面加一个逗号,例如(3,)。答案:正确57、Python标准库random的方法randint(m,n)用来生成一个[m,n]区间上的随机整数。答案:正确58、Python支持多继承,如果父类中有相同的方法名,而在子类中调用时没有指定父类名,则Python解释器将从左向右按顺序进行搜索。答案:正确59、在try...except...else结构中,如果try块的语句引发了异常则会执行else块中的代码。答案:错误60、异常处理结构中的finally块中代码仍然有可能出错从而再次引发异常。答案:正确61、在Python中定义类时实例方法的第一个参数名称不管是什么,都表示对象自身。答案:正确62、在函数内部没有任何声明的情况下直接为某个变量赋值,这个变量一定是函数内部的局部变量。答案:正确63、在Python中定义函数时不需要声明函数参数的类型。答案:正确64、表达式{}==None的值为True。答案:错误65、定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数。答案:正确66、调用函数时传递的实参个数必须与函数形参个数相等才行。答案:错误67、在类定义的外部没有任何办法可以访问对象的私有成员。答案:错误68、Python类的构造函数是__init__()。答案:正确69、假设random模块已导入,那么表达式random.sample(range(10),20)的作用是生成20个不重复的整数。答案:错误70、lambda表达式中可以使用任意复杂的表达式,但是必须只编写一个表达式。答案:正确71、Python里用来告知解释器跳过当前循环中的剩余语句,然后继续进行下一轮循环,此关键词是_________。答案:continue72、Python安装扩展库常用的是_______工具。答案:pip73、用JupyterNotebook编辑保存的文件,缺省的文件扩展名是_________。答案:ipynb74、使用pip工具查看当前已安装的Python扩展库的完整命令是_____________。答案:piplist75、在Python中__________表示空类型。答案:None76、列表、元组、字符串是Python的_________(有序?无序)序列。答案:有序77、查看变量类型的Python内置函数是_____________。答案:type()78、Python运算符中用来计算整商的是_________。答案://79、表达式[1,2,3]*3的执行结果为______________________。答案:[1,2,3,1,2,3,1,2,3]80、list(map(str,[1,2,3]))的执行结果为_____________________。答案:[‘1’,‘2’,‘3’]81、假设列表对象aList的值为[3,4,5,6,7,9,11,13,15,17],那么切片aList[3:7]得到的值是______________________。答案:[6,7,9,11]82、使用列表推导式生成包含10个数字5的列表(使用变量名i,range函数),语句可以写为______________________。答案:[5foriinrange(10)]83、假设有列表a=['name','age','sex']和b=['Dong',38,'Male'],请使用一个语句将这两个列表的内容转换为字典c,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_____________________。答案:c=dict(zip(a,b));c=dict(zip(a,b))84、任意长度的Python列表、元组和字符串中最后一个元素的下标为________。答案:-185、Python语句list(range(1,10,3))执行结果为___________________。答案:[1,4,7]86、Python使用符号__________来划分语句块。答案:缩进对齐87、Python有序序列类型包括___________、___________、___________三种。答案:字符串;列表;元组;列表;元组;字符串;元组;字符串;列表;88、语句x=3==3,5执行结束后,变量x的值为_____________。答案:(True,5)89、切片操作list(range(6))[::2]执行结果为________________。答案:[0,2,4]90、Python3.x语句print(1,2,3,sep=':')的输出结果为____________。答案:1:2:391、表达式int(4**0.5)的值为____________。答案:292、Python内置函数_________可以返回列表、元组、字典、集合对象中元素个数。答案:len()93、已知列表对象x=['11','2','3'],则表达式max(x)的值为___________。答案:'3'94、iPython中的魔法命令,以字符____________开始。答案:%;;95、已知列表对象x=['11','2','3'],则表达式max(x,key=len)的值为___________。答案:'11'96、已知x=3和y=5,执行语句x,y=y,x后x的值是_______。答案:597、字典对象的_____________方法返回字典中的“键-值对”列表。答案:items()98、已知x={1:2},那么执行语句x[2]=3之后,x的值为________________。答案:{1:2,2:3}99、表达式{1,2,3,4}-{3,4,5,6}的值为__________________。答案:{1,2}100、表达式set([1,1,2,3])的值为____________________。答案:{1,2,3}101、使用列表推导式得到100以内所有能被13整除的数的代码可以写作___________________________________。答案:[iforiinrange(100)ifi%13==0];;102、表达式3<5>2的值为_______________。答案:True103、已知x={'a':'b','c':'d'},那么表达式'b'inx的值为______________。答案:False104、表达式3or5的值为________。答案:3105、表达式0or5的值为_________。答案:5106、已知x=[3,5,7],那么表达式x[10:]的值为____________。答案:[]107、已知x=[3,7,5],那么执行语句x.sort(reverse=True)之后,x的值为_________________。答案:[7,5,3]108、表达式list(zip([1,2],[3,4]))的值为________________________。答案:[(1,3),(2,4)]109、已知列表x=[1,2],那么表达式list(enumerate(x))的值为_______________。答案:[(0,1),(1,2)]110、已知x=list(range(10)),则表达式x[-4:]的值为__________。答案:[6,7,8,9]111、表达式3<<2的值为_______________。答案:12112、Python3.x语句print(1,2,3,sep=':')的输出结果为________________。答案:1:2:3113、在循环语句中,__________语句的作用是提前结束本层循环。答案:break114、表达式'%c'%65的值为_________。答案:'A'115、表达式':'.join('abcdefg'.split('cd'))的值为______________。答案:'ab:efg'116、表达式isinstance('abcdefg',str)的值为____________。答案:True117、表达式'Hello'.upper()的值为___________。答案:'HELLO'118、表达式round(3.7)的值为_________。答案:4119、已知x='a234b123c',并且re模块已导入,则表达式re.split('\d+',x)的值为____________。答案:['a','b','c']120、已知列表x=list(range(10)),那么执行语句delx[::2]之后,x的值为_________。答案:[1,3,5,7,9]121、已知x=[1,2,3,2,3],执行语句x.remove(2)之后,x的值为____________。答案:[1,3,2,3]122、已知列表x=[1,2,3],那么执行语句x.insert(0,4)只有,x的值为___________。答案:[4,1,2,3]123、已知列表x=[1,2,3],那么执行语句x.pop(0)之后,x的值为_________。答案:[2,3]124、表达式list(map(lambdax:x+5,[1,2,3,4,5]))的值为______________________。答案:[6,7,8,9,10]125、表达式5if5>6else(6if3>2else5)的值为_________。答案:6126、表达式len('中国'.encode('utf-8'))的值为___________。答案:6127、表达式chr(ord('A')+2)的值为__________。答案:'C'128、Python中定义函数的关键字是_________________。答案:def129、如果函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为_________________。答案:None130、表达式'abcab'.replace('a','yy')的值为___________。答案:'yybcyyb'131、表达式'abcab'.strip('ab')的值为__________。答案:'c'132、表达式list(filter(None,[0,1,2,3,0,0]))的值为___________________。答案:[1,2,3]133、表达式list(filter(lambdax:x>2,[0,1,2,3,0,0]))的值为_________。答案:[3]134、表达式type(3)in(int,float,complex)的值为____________。答案:True135、表达式eval('3+5')的值为_________________。答案:8136、Python标准库random中的___________方法作用是从序列中随机选择1个元素。答案:choice()137、Python标准库random中的sample(seq,k)方法作用是从序列中选择________(重复?不重复?)的k个元素。答案:不重复138、random模块中_____________方法的作用是将列表中的元素随机乱序。答案:shuffle()139、执行代码x,y,z=sorted([1,3,2])之后,变量y的值为______。答案:2140、表达式{1,2,3}|{3,4,5}的值为_____________________。答案:{1,2,3,4,5}141、表达式{1,2,3}&{3,4,5}的值为______________。答案:{3}142、Python内置函数_____________用来打开或创建文件并返回文件对象。答案:open()143、使用上下文管理关键字______________可以自动管理文件对象,不论何种原因结束该关键字中的语句块,都能保证文件被正确关闭。答案:with144、表达式dict(zip([1,2],[3,4]))的值为____________________________。答案:{1:3,2:4}145、已知x={1,2,3},那么执行语句x.add(3)之后,x的值为__________。答案:{1,2,3}146、导入reduce()函数后,表达式reduce(lambdax,y:x-y,[1,2,3])的值为____。答案:-4147、已知有函数定义defdemo(*p):returnsum(p),那么表达式demo(1,2,3)的值为______。答案:6148、已知列表x=[1,2],那么执行语句x.append([3])之后,x的值为_____________。答案:[1,2,[3]]149、表达式{1,2,3}=={1,3,2}的值为___________。答案:True150、表达式[1,2,3]==[1,3,2]的值为____________。答案:False151、已知x={1:2,2:3,3:4},那么表达式sum(x.values())的值为_________。答案:9152、已知x=[3,2,3,3,4],那么表达式[indexforindex,valueinenumerate(x)ifvalue==3]的值为____________。答案:[0,2,3]153、表达式1234%1000//100的值为___________。答案:2154、已知列表x=[1,3,2],那么执行语句x.reverse()之后,x的值为____________。答案:[2,3,1]155、已知字典x={i:str(i+3)foriinrange(3)},那么表达式sum(x)的值为______。答案:3156、已知列表x=[1,3,2],那么执行语句a,b,c=sorted(x)之后,b的值为____。答案:2157、已知函数定义deffunc(**p):return''.join(sorted(p)),那么表达式func(x=1,y=2,z=3)的值为__________。答案:'xyz'158、已知x='abcd'和y='abcde',那么表达式[i==jfori,jinzip(x,y)]的值为________________。答案:[True,True,True,True]159、对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时________(会?不会?)执行else中的代码。答案:会160、在iPython或JupyterNotebook中,要运行外部的python文件,可以使用魔法命令___________。答案:%run161、表达式'test.py'.endswith(('.py','.pyw'))的值为__________。答案:True162、已知x=(3),那么表达式x*3的值为__________。答案:9163、已知x=(3,),那么表达式x*3的值为_____________。答案:(3,3,3)164、表达式len('abc'.ljust(20))的值为______________。答案:20165、假设正则表达式模块re已导入,那么表达式re.sub('\d+','1','a12345bbbb67c890d0e')的值为_____________________。答案:'a1bbbb1c1d1e'166、字典对象的___________方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。答案:get()167、知x={1:2,2:3},那么表达式x.get(3,4)的值为____。答案:4168、对文件进行写入操作之后,_______________方法用来在不关闭文件对象的情况下将缓冲区内容写入文件。答案:flush()169、已知x={1:1},那么执行语句x[2]=2之后,len(x)的值为____________。答案:2170、已知列表x=[1,2],那么连续执行命令y=x和y.append(3)之后,x的值为________。答案:[1,2,3]171、简述ascii、unicode、utf-8、gbk的关系?答案:

ascii是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符,Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间,可以用在内存处理中,兼容了utf-8,gbk,ASCII。

utf-8为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示。特点:节省空间,速度慢,用在硬盘数据传输,网络数据传输。gbk是中文的字符编码,用2个字节代表一个字符。172、编写程序,让用户在键盘上输入一个自然数n,然后在区间[1,5n]上随机生成n个不重复的自然数,输出这些自然数,然后对这些自然数的进行处理,只保留所有偶数并输出。答案:

importrandom

n=int(input('请输入一个自然数:'))

data=random.sample(range(1,5*n+1),n)

print(data)

print([dfordindataifd%2==0])173、编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。答案:

importrandom

data=[random.randrange(50)foriinrange(20)]

print(data)

data[:10]=sorted(data[:10])

data[10:]=sorted(data[10:],reverse=True)

print(data)174、编写程序,使用筛选法求解小于n的所有素数。答案:maxNumber

=

int(input('请输入一个自然数:

'))

lst

=

list(range(2,

maxNumber))

#最大整数的平方根

m

=

int(maxNumber**0.5)

for

index,

value

in

enumerate(lst):

#如果当前数字已大于最大整数的平方根,

结束判断

if

value

>

m:

break

#对该位置之后的元素进行过滤

lst[index+1:]

=

filter(lambda

x:

x%value

!=

0,lst[index+1:])

print(lst)175、编写程序,要求用户输入一些数字,输出这些数字中仅出现过一次的那些数字。作业要求:1.写出上述问题Python代码,并保留运行中间结果,上传JupyterNotebook格式源程序,即扩展名为.ipynb(包含中间运行输出结果),千万不要使用浏览器中的另存为网页的导出文件格式2.源代码要求有必要的功能说明注释,并注明自己学号和姓名答案:

data

=

input('请输入使用空格分隔的若干数字:

').split()

data

=

[int(num)

for

num

in

data]

for

num

in

data:

if

data.count(num)

==

1:

print(num)176、编写函数,接收圆的半径作为参数,返回圆的面积。作业要求:1.写出上述问题Python代码,并保留运行中间结果,上传JupyterNotebook格式源程序,即扩展名为.ipynb(包含中间运行输出结果),千万不要使用浏览器中的另存为网页的导出文件格式2.源代码要求有必要的功能说明注释,并注明自己学号和姓名答案:

from

math

import

pi

as

PI

def

CircleArea(r):

if

isinstance(r,

(int,float)):

#确保接收的参数为数值

return

PI*r*r

else:

print('You

must

give

me

an

integer

or

float

as

radius.')

print(CircleArea(4))177、编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。答案:

def

isPalindrome1(text):

'''循环,

首尾检查'''

length

=

len(text)

for

i

in

range(length//2+1):

if

text[i]

!=

text[-1-i]:

return

False

return

True178、编写程序,要求用户输入一些数字,输出这些数字中仅出现出现过一次的那些数字。答案:data

=

input('请输入使用空格分隔的若干数字:

').split()

data

=

[int(num)

for

num

in

data]

for

num

in

data:

if

data.count(num)

==

1:

print(num)

解析:179、编写函数,接收一个字符串,返回其中每个字符的最后一次出现,并按每个字符最后一次出现的先后顺序一次存入列表。例如,对于字符串’abcda’的处理结果为[‘b’,

’c’,

’d’,

’a’],而字符串’abcbda’的处理结果为[‘c’,

’b’,

’d’,

’a’]。答案:def

lastAppear(s):

result

=

[]

for

ch

in

s:

if

ch

in

result:

result.remove(ch)

result.append(ch)

return

result180、假设有两个文本文件file1.txt和file2.txt,编写程序merge.py,把两个文本文件中的内容合并到新文件result.txt中。要求文件file1.txt和file2.txt中的行在result.txt中交替出现。即result.txt中的奇数行来自file1.txt,偶数行来自file2.txt。如果两个文件行数不一样,则处理完行数较少的文件之后,把另一个文件中剩余的所有行直接追加到result.txt的最后。答案:fileName1

=

input('Input

a

fileName:

')

fileName2

=

input('Input

another

fileName:

')

with

open('result.txt',

'w',

encoding='utf8')

as

fp:

with

open(fileName1,

encoding='utf8')

as

fp1,open(fileName2,

encoding='utf8')

as

fp2:

while

True:

line1

=

fp1.readline()

if

line1:

fp.write(line1)

else:

flag

=

False

break

line2

=

fp2.readline()

if

line2:

fp.write(line2)

else:

flag

=

True

break

fp3

=

fp1

if

flag

else

fp2

for

line

in

fp3:

fp.write(fp3.readline())181、编写程序,创建一个字典,然后让用户输入一个内容作为键并输出字典中对应元素的值。如果用户输入的键不存在就进行适当的提示,如果用户输入单词quit的任意大小写(如Quit,QUIT)组合就结束程序。另外,要求在输入或者使用输入作为检索处使用异常处理结构。答案:d

=

{str(i):i**3

for

i

in

range(20)}

while

True:

num

=

input('请输入一个数字:

').lower()

if

num

==

'quit':

break

try:

print(d[num])

except:

print('请重新输入')

解析:182、编写程序,要求等待用户输入名字、地点和爱好,根据用户的名字和爱好进行任意显示,如“敬爱可亲的xxx,最喜欢在xxx地方干xxx”。答案:

v=input("请输入输入名字、地点、爱好并用“+”隔开:")

v1,v2,v3=v.split("+")

content="敬爱可亲的{name},最喜欢在{place}地方干{like}"

c=content.format(name=v1,place=v2,like=v3)

print(c)183、编写程序,制作随机验证码并让用户输入进行验证。流程如下:

--用户执行程序

--给用户显示需要输入的验证码

--用户输入的值

用户输入的值和显示的值相同时显示正确信息;否则继续生成随机验证码继续等待用户输入。答案:import

randomdef

check_code():

checkcode

=

''

for

i

in

range(4):

current

=

random.randrange(0,4)

if

current

!=

i:

temp

=

chr(random.randint(65,90))

else:

temp

=

random.randint(0,9)

checkcode

+=

str(temp)

return

checkcode

code

=

check_code()

while

True:

code

=

check_code()

print(code)

v

=

input("请输入验证码:")

if

v

==

code:

print("输入正确!!!")

break

else:

print("请重新输入:")184、编写程序,利用集合特性获取指定范围内随机生成的一定数量的不重复整数。答案:import

random

def

randomNumbers(number,

start,

end):

Data=

set()

while

len(Data)<number:

Ele=random.randint(start,

end)

Data.add(Ele)

return

Data

data=randomNumbers(10,

1,

100)

print(data)185、使用列表推导式得到100以内所有能被3整除的数的代码可以写作(变量名使用i)答案:[iforiinrange(100)if(i%3==0)]186、下列表达式的值为True的是A、5+4j>2-3jB、3>2>2C、(3,2)>(’a’,’b’)D、’abc’<’xyz’答案:D《数据采集与处理:基于Python》复习思考题、习题与答案第三章Numpy与Pandas基础1、计算numpy中元素个数的方法是?A、np.sqrt()B、np.size()C、np.identityD、np.len()答案:B2、已知c=np.arange(16).reshape(2,4,2)那么c.sum(axis=0)所得的结果为?A、array([[12,16],[44,48],[76,80]])B、array([[1,5,9,13],[17,21,25,29],[33,37,41,45]])C、array([[24,27],[30,33],[36,39],[42,45]])D、array([[8,10],[12,14],[16,18],[20,22]])答案:D

解析:构造数组为2个4*2数组,axis=0即求和是在第0维前后两页array上对应元素求和,得到4*2的数组3、有数组n=np.arange(24).reshape(2,-1,2,2),n.shape的返回结果是什么?A、(2,3,2,2)B、(2,2,2,2)C、(2,4,2,2)D、(2,6,2,2)答案:A4、numpy中创建全为0的矩阵使用函数为?A、zeros.B、ones.C、empty.D、arange.答案:A5、numpy中向量转成矩阵使用函数为?A、randomB、revalC、reshapeD、arange答案:C

解析:考察numpy函数功能6、在使用numpy时需要如何导入?A、不用导入,直接使用B、importnumpyasnpC、importsysD、importpandas答案:B

解析:考察numpy模块名称与导入方法7、importnumpyasnp;t1=np.arange(16).reshape((4,4)),如何将t1数组进行行列转置?A、t1.TB、t1.transpose()C、t1.swapaxes(0,1)D、以上都对答案:D

解析:numpy多维数组的多种转置方法8、对numpy生成的数组中,随机选择部分样本,使用哪个函数?A、sample()B、select()C、choice()D、shuffle()答案:C

解析:choice(a[,size,replace,p]):从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为False9、下列numpy中哪个函数可以生成符合标准正态分布的数组?A、random.rand()B、random.randint()C、random.random()D、random.randn()答案:D

解析:考察numpy随机数生成函数及区别10、importnumpyasnp;arr=np.arange(10).reshape((5,2))[:,0:-1:2],arr的值是?A、[[1],[2],[3],[4],[5]]B、[[5],[6],[7],[8],[9]]C、[[0],[2],[4],[6],[8]]D、所列结果都不对答案:C

解析:考察numpy数组重塑与切片操作11、使用numpy创建一个大小为10的零向量数组,函数形式为____。答案:zeros(10);np.zeros(10)12、使用numpy创建一个数组,使它的值为10到49,函数形式为____。答案:arange(10,50);arange(10,50,1);np.arange(10,50);

np.arange(10,50,1)13、5x3矩阵乘3x2矩阵,对应结果的形状是____。答案:(5,2);5x214、arr=np.arange(10),写出获取数组arr第3至第8个元素(注意3和8不是索引下标)的切片语句____。答案:arr[2:8]15、numpy中根据起止数据等间距地生成数组的函数是____。答案:linspace();np.linspace()16、numpy中能够一次完成多个数组拼接的函数是____。答案:concatenate();np.concatenate()17、numpy生成的数组中,其元素数据类型____(必须相同/可以不同)。答案:必须相同18、TT=np.arange(4)-2,变量TT的值为____。答案:[-2-101];array([-2,-1,0,1]);[-2,-1,0,1];[-2,-1,0,1][-2-101];array([-2,-1,

0,

1]);[-2,-1,

0,

1];[-2,-1,0,1]19、TT=np.arange(4).mean(),变量TT的值为____。答案:1.520、numpy中读取CSV文件的函数是____。答案:loadtxt();np.loadtxt()21、使用np.random.random创建一个10*10对象,并打印出其最大、最新元素和均值。

{答案:importnumpyasnp

a=np.random.random((10,10))

print(a.max(),a.min(),a.mean())

}22、使用numpy生成3行4列的数值为0至11之间整数的2维数组,然后使矩阵每行的数据减去该行的均值,并保持原来形状,输出结果。试写出完整Python代码。

{答案:importnumpyasnp

X=np.arange(12).reshape((3,4))

print("X=",X)

Y=X-X.mean(axis=1,keepdims=True)

print("Y=",Y)

}

解析:numpy.mean(a,axis,dtype,out,keepdims),axis=1:压缩列,对各行求均值;keepdims=True表示维度缩减的轴在运算之后仍被保留23、创建一个长度为10的一维全为0的ndarray对象,第五个元素为1,并打印,写出完整Python代码.

{答案:importnumpyasnp

a=np.zeros((10,))

a[4]=1

print(a)

}24、给定数组[1,2,3,4,5],如何得到在这个数组的每个元素之间插入3个0后的新数组?试使用numpy模块写出完整Python代码.

{答案:importnumpyasnp

nd1=np.arange(1,6)

nd2=np.zeros(shape=17,dtype=int)

nd2[::4]=nd1

}25、创建一个5*3随机矩阵和一个3*2的元素值为0~100之间随机整数的矩阵,求矩阵积,打印结果。试用numpy模块实现并写出完整Python代码.

{答案:importnumpyasnp

n1=np.random.randint(0,100,size=(5,3))

n2=np.random.randint(0,100,size=(3,2))

result=np.dot(n1,n2)

print("结果为",result)

}26、通过Numpy创建的数组与列表相比,有何异同?数据类型限制、存储效率、运算效率、矩阵运算、算术运算区别如乘法?答案:Numpy创建的数组,其元素数据类型都是相同的,而列表则可以不同,这导致列表的存储效率和运算效率都较低。Numpy数组支持矩阵运算,而列表不支持;在算术运算上也有区别,对于乘法运算,列表是对元素进行复制,而Numpy数组则是针对其上的每个元素进行乘法算术运算27、Numpy创建数组的函数arange()、linspace()、logspace()各有什么作用?答案:arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值logspace函数和linspace类似,不过它创建等比数列,起始位和终止位代表的是10的幂(默认基数为10),如果想要改变基数,则需要修改其默认基数,输入有第四个参数base,改变其值即可。28、Numpy存取元素的方法都有哪些?存取后的变量与原始数组是否共享数据空间,分不同情况么?答案:Numpy存取元素的方法有多种,如:1)用整数作为下标可以获取数组中的某个元素;2)用范围作为下标获取数组的一个切片,符号使用“:”,形式为[起点:终点:步长],下标可以使用负数,表示从数组后往前数,缺省范围为左闭右开。通过下标范围获取的新的数组是原始数组的一个视图,即与原始数组共享同一块数据空间;3)使用整数序列。当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。使用整数序列作为下标获得的数组不和原始数组共享数据空间;4)使用布尔数组。当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组,不能使用布尔列表29、Numpy的any()和all()方法有何作用和区别?答案:数组的any()或all()方法。只要数组中有一个值为True,则any()返回True;而只有数组的全部元素都为True,all()才返回True30、Numpy的两个数组的shape不同的话,如何进行算术运算?答案:使用ufunc函数对两个数组进行计算时,ufunc函数会对这两个数组的对应元素进行计算,因此它要求这两个数组有相同的大小(shape相同)。如果两个数组的shape不同的话,会进行如下的广播(broadcasting)处理:1.让所有输入数组都向其中shape最长的数组看齐,shape中不足的部分都通过在前面加1补齐。2.输出数组的shape是输入数组shape的各个轴上的最大值。3.如果输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1时,这个数组能够用来计算,否则出错。4.当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值。31、Numpy数组的拼接方法都有哪些?简单介绍答案:Python中numpy数组的合并有很多方法,如:1)np.append()。用于合并两个数组。该函数返回一个新数组,原始数组保持不变.函数语法为:numpy.append(arr,values,axis=None).axis:该轴指定沿其附加值的轴。如果未提供轴,则将两个阵列展平;values:值是类似数组的对象,并附加到“arr”元素的末尾2)np.concatenate()。参数为要连接的数组对象和指定连接的轴axis。axis=1进行水平组合,axis=0进行垂直组合3)np.stack()。把数组给堆叠起来,函数原型为:stack(arrays,axis=0),arrays可以传数组和列表。axis=1进行水平组合,即水平(按列顺序)将数组进行堆叠;axis=0进行垂直组合4)np.hstack()。参数为要连接的数组对象,进行水平组合5)np.vstack()。参数为要连接的数组对象,进行垂直组合6)np.dstack()。深度组合:沿着纵轴方向组合其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题32、Pandas中DataFrame对象调用描述性统计方法describe,对数值型的列数据会输出哪些统计结果,而对类别或文本型的列数据又会输出哪些统计结果答案:数值型数据列的描述性统计,会输出针对数据的统计信息,如均值、标准差、中值、最小值、最大值及四分位统计值等;而类别或文本型列数据的描述性统计,其结果包括count(计数)、unique(唯一值个数)、top(出现频率最高的值)、freq(频率最高值的频度)等。33、简述pandas数据对象Series和DataFrame的算数运算的对齐机制答案:pandas可以对不同索引的对象进行算术运算,如果存在不同的索引对,结果的索引就是该索引对的并集。sereis相加会自动进行数据对齐操作,在不重叠的索引处会使用NA(NaN)值进行填充,series进行算术运算的时候,不需要保证series的大小一致。dataFrame相加时,对齐操作需要行和列的索引都重叠的时候才会相加,否则会使用NA值进行填充。使用add方法对两个series进行相加的时候,设置fill_value的值是对于不存在索引的series用指定值进行填充后再进行相加。除了加法add,还有sub减法,div除法,mul乘法,使用方式与add相同。DataFrame与series一样。34、简述Pandas中的两类数据结构Series和DataFrame的特点与作用?答案:Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴标一般指索引。DataFrame是二维标记数据结构,列可以是不同的数据类型。它是最常用的pandas对象,像Series一样可以接收多种输入:lists、dicts、series和DataFrame等。初始化对象时,除了数据还可以传index和columns这两个参数。Series兼具Numpy数组的特点,运算效率高,支持对元素的成批量运算,但相比Numpy数组,还支持自动对齐的计算,并提供了多种函数支持数据的读入、处理、分析等功能;特别是DataFrame,支持多种数据源的读入,特别是对关系数据库的访问和数据处理,非常高效。35、简述Pandas中DataFrame与Numpy中二维数组的检索方法的异同答案:对于DataFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法。首先对于ndarray,如二维的ndarray对象arr,则arr[i]和arr[i][j](等价于arr(i,j))都可以表示索引,其中arr[i]表示行索引,arr[i][j]表示有顺序的先进行第一个维度的索引(即行),再进行第二个维度的索引(即对应的行中的元素)。对于DataFrame,如一个DataFrame对象df.虽然同ndarray类似,都有类似的索引方式,但是直接索引的内容却不一样,比如df['a']得到第一列,这里不同于arr[i],对于DataFrame对象,直接的df[i]索引,得到的是第i+1列,而不是第i+1行。当进行切片索引的时候,比如重新定义df,切片索引又同ndarray一样,df[:2]得到前两行,而不是前两列;df[:][:1]得到第一列。故在切片索引的时候,又和ndarray一样了。此外,DataFrame对象还有索引方法df.iloc[]和df.loc[],前者是对index和columns为整数时的所以,后者是对index和columns为其他标签时的索引;对于df.iloc[],其索引方式和ndarray完全一样,既可以以df.iloc[i][j]的方式索引,也可以以df.iloc[i,j]的方式索引,当然也可以直接的df.iloc[i]的方式索引。因此,对于DtaFrame对象,其只有直接的df[][]索引和ndarray不一样,此时DataFrame先索引的是列,而不是行,也没有df[i,j]的索引方法,但是对于切片索引以及df.iloc的索引方法,和ndarray完全一样;此外,DataFrame还有df.loc的标签索引方法。36、执行importpandasaspd;obj=pd.Series(range(4),index=['a','b','c','d']);

obj[obj<1];输出结果为A、a0B、b1C、b0D、c2答案:A37、一个含有具体数据和空值的DataFrame数据对象df,执行df1=df.dropna(inplace=True)后:A、df1和df一样,都是删除了空值的结果B、df1为None,df为删除了空值的结果C、df1为删除了空值的结果,df不变D、df1为df操作前的值,df为删除了空值的结果答案:B38、obj=pd.Series(['c','a','d','a','a','b','b','c','c']),运行

list(obj.unique())返回结果为答案:['c','a','d','b']39、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});检索data中数值'two'的方法为:A、data.k1[1]B、data.loc[1,'k1']C、data.iloc[1,0]D、以上方法都正确答案:D40、importpandasaspd;data=pd.DataFrame({'k1':['one','two']*3+['two'],'k2':[1,1,2,3,3,4,4]});执行data.k2.sum()返回结果为:答案:1841、由于数据类型和维度不同,Pandas的DataFrame对象和Series之间不能进行算数运算答案:错误

42、对于一个含有空值的DataFrame对象df,执行df.fillna(0,inplace=True)后,df中的空值填充为0,并且返回修改后的结果答案:错误43、不设置index和columns参数,基于一个多维数组使用pandas的DataFrame函数创建对象df,使用loc和iloc方法对df中数据进行检索的形式是相同的答案:正确44、一个DataFrame对象,调用其drop_duplicates()函数后,仅保留重复行中的最后一行答案:错误45、对一个DataFrame对象调用其mean()方法,缺省执行的操作是axis等于答案:046、对于包含多个列的DataFrame,调用其无参数的describe()函数后,仅返回数据类型为数值的列的描述性统计信息答案:正确47、对于两个columns完全相同的DataFrame,将其中一个的所有记录追加到另一个对象,可使用函数答案:append();append;concat();concat48、两个有相同和不同columns的DataFrame,如果要合并两者的所有属性和对应记录行,可使用如下方法A、join()B、merge()C、join()和merge()方法都可以D、没法合并答案:C

解析:49、importpandasaspd,numpyasnp;

pd.DataFrame(np.arange(10,25).reshape(3,5)).ndim返回值为:答案:250、Dataframe之间的连接方法有哪些?答案:Pandas提供了大量的方法能够轻松的对Series,DataFrame和Panel对象进行各种符合各种逻辑关系的合并操作。1)Concat:函数形式为pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,Copy=True)2)Merge(类似于SQL类型的合并):函数形式为:pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,

left_index=False,right_index=False,sort=True,suffixes=('_x','_y'))默认情况下,merge做的是“inner”连接,结果中的键是交集。其他方式还有“left”,“right”以及“outer”。3)Append(将一行连接到一个DataFrame上)51、Pandas提供了什么方法可以检测缺失数据和重复数据,哪些可以删除缺失数据和重复数据?答案:pandas中用函数isnull和notnull来检测数据丢失,使用drop、dropna函数可以删除对应行或列duplicated方法返回一个布尔型Series,表示各行是否是重复行;还有一个drop_duplicated方法,它返回一个移除了重复行的DataFrame:52、对于Dataframe对象,如何进行分组统计?答案:首先使用groupby函数进行分组,然后使用分组后的对象直接调用或使用agg函数调用聚合函数如mean、sum等就可以进行分组统计;另外,也可使用交叉表crosstab、数据透视表pivot_table函数等进行简单的分组统计53、Pandas都提供了哪些方法可以读取外部数据源?答案:Pandas提供了丰富的外部数据源访问接口,如CSV、JSON、XML、HTML、EXCEL、HDF、关系数据库等,相应的函数则是以read_或to_打头的读写函数《数据采集与处理:基于Python》复习思考题、习题与答案第四章数据可视化1、数据可视化中的组成有哪些方面?答案:数据可视化技术一般由下列三个方面组成:(1)科学可视化:主要关注三维现象的可视化,包含气象学、生物学、物理学、农学等。重点在于对客观事物的体、面及光源等的逼真渲染。(2)信息可视化:将数据信息和知识转换为一种视觉形式,在信息可视化中充分利用了人们对可视模式快速识别度自然能力。(3)可视化分析:是科学可视化与信息可视化领域发展的产物,侧重于借助交互式的用户界面而进行对数据的分析与推理。2、如何在一张图中比较不同类型的绘图?有几种方法?答案:使用比较类型的绘图类型,如柱状图、饼

温馨提示

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

评论

0/150

提交评论