1、关于数据分析的说法,下列描述错误的是()。C
A.数据分析可以通过计算机工具和数学知识处理数据|
B.可以做出具有针对性的决策|
C.数据分析没有实际的使用意义|
D.在大数据环境下,数据分析能够挖掘出更有价值的信息
2、下列关于数据分析概念的描述错误的是( )。D
A.使用适当的统计分析方法对收集来的大量数据进行分析|
B.数据分析可以从数据中提炼出有用的信息并形成结论|
C.数据分析可以对数据进行更深层的研究|
D.数据分析不能够在杂乱无章的数据中提取有用的数据
3、数据分析的一般流程为( )。A
A.明确目的和思路、数据收集、数据处理、数据分析、数据展现|
B.明确目的和思路、数据收集、数据分析、数据展现|
C.数据收集、数据处理、数据分析、数据展现|
D.明确目的和思路、数据处理、数据分析、数据展现
4、下列选项中,()是基于Web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。A
A.Jupyter Notebook|
B.Anconda Navigator|
C.Anconda Prompt|
D.Spyder
5、下列选项中,用于搭接数据仓库和保证数据质量的是( )。B
A. 数据收集 |
B. 数据处理|
C. 数据分析|
D. 数据展现
6、Matplotlib主要是用哪种语言编写的?( )A
A.Python|
B.java|
C.C++|
D.C
7、关于Anconda组件的说法中,下列描述错误的是()。B
A.Anaconda Prompt是Anaconda自带的命令行|
B.Jupyter Notebook是基于客户端的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程|
C.Spyder是一个使用Python语言、跨平台的、科学运算集成开发环境|
D.Anaconda Navigator是用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在Navigator中手动实现
8、关于Anaconda的组件中,可以编辑文档且展示数据分析过程的是( )。D
A. Anaconda Navigator|
B. Anaconda Prompt|
C. Spyder|
D. Jupyter Notebook
9、请简述什么是数据分析。
数据分析是指,使用适当的统计分析方法(如聚类分析、相关分析等)对收集来的大量数据进行分析,从中提取有用的信息形成结论,并加以详细研究和概括总结的过程。
10、请简述数据分析的应用领域。(至少3个)
Python可以应用在下列领域:
(1)营销方法面的应用
(2)医疗方面的应用
(3)零售方面的应用
(4)网络安全方面的应用
(5)交通物流方面的应用
11、请简述为什么选择使用Python做数据分析。(至少3个)
(1)语法简单精炼,适合初学者入门
(2)拥有一个巨大且活跃的科学计算社区
(3)拥有强大的通用编程能力
(4)人工智能时代的通用语言
(5)方便对接其他语言
12、请简述什么是Anconda。
Anconda是一个可以便捷获取和管理包,同时对环境可以统一管理的发行版本,它包含了conda、Python在内的超过180个科学包及其依赖项。
13、简述Anconda的特点。
(1)包含了众多流行的科学、数学、工程和数据分析的Python库
(2)完全开源和免费
(3)额外的加速和优化是收费的,但对于学术用途,可以申请免费的License
(4)全平台支持Linux、Windows、Mac OS X、支持Python2.6、2.7、3.4…
14、请简述什么是conda。
conda是一个在Windows、Mac OS和Linux上运行的开源软件包管理系统和环境管理系统,可以快速地安装、运行和更新软件包及其依赖项。
15、使用Anconda进行开发,可以有效的解决包配置与包冲突的问题。()对
16、Anconda是完全免费的。()对
17、Anconda不支持Python2.x版本。()错
18、conda是一个在Windows、Mac OS、和Linux上运行的开源软件包管理系统和环境管理系统。()对
19、Jupyter Notebook的优点是可以重现整个分析过程,并将说明文字、代码、图表、公式和结论都整合在一个文档中。()对
20、只要当前的系统中安装了Anconda,则默认就已经拥有了Jupyter Notebook,不需要再另行下载和安装。()对
21、Jupyter Notebook可以将文件保存为ipynb格式。()对
22、如果要卸载指定环境中的包,则直接使用remove命令移除即可。()对
23、Python是一门胶水语言,可以轻松地操作其它语言编写的库。()对
24、数据分析是一个有目的地收集和整合数据的过程。()错
25、Numpy是Python开源的数值计算扩展工具。()对
26、Pandas是一个基于NumPy的数据分析包,它是为了解决数据分析任务而创建的。()对
27、Matplotlib是一个用在 Python 中绘制数组的3D 图形库。()错
28、Seaborn是Python中基于Matplotlib的数据可视化工具,它提供了很多高层封装的函数。()对
29、NLTK库适用于处理文本分析。()对
30、Jupyter Notebook可以使用命令行方式打开。()对
31、使用pip命令也可以查看Anconda安装的包。()对
32、Jupyter Notebook可以使用Markdown语法()对
第二章
1、下列关于ndarray对象描述正确的是( )。B
A.ndarray对象中可以存储不同类型的元素|
B.ndarray对象中存储元素的类型必须是相同的|
C. ndarray对象不支持广播操作|
D.ndarray对象不具备矢量运算能力
2、下列选项中,不属于ndarray对象属性的是( )。D
A.shape|
B.dtype|
C.ndim|
D.map
3、要想创建一个3 * 4的数组,下列选项正确的是( )。A
A.np.arange(12).reshape(4, 3)|
B.np.arange(12).reshape(3, 4)|
C.np.arange(7).reshape(4, 3)|
D.np.arange(7).reshape(3, 4)
4、关于ndarray对象属性,下列描述错误的是( )。C
A.ndim属性表示数组轴的个数|
B.shape属性表示每个维度上数组的大小|
C.size属性表示数组元素的总个数,等于shape属性元组元素的和|
D.dtype属性表示数组中元素类型的对象
5、关于创建ndarray对象。下列描述错误的是( )。A
A. 使用list()函数可以创建一个ndarray对象|
B.通过ones()函数创建元素值都为1的数组|
C.ndarray对象可以使用array()函数创建|
D.通过zeros()函数创建元素值都是0的数组
6、下列函数中,可以用于创建等差数组的函数是( )。B
A. empty()|
B.arange()|
C.zeros()|
D.ones()
7、请阅读下列一段程序:
arr = np.arange(12).reshape(3, 4)
arr.shape
运行上述程序,它最终执行的结果为( )。C
A. 3|
B.4|
C.(3, 4)|
D.(1, 2)
8、在创建ndarray对象时,可以使用( )参数来指定元素类型。A
A.dtype|
B.dtypes|
C.type|
D.types
9、下列关于数组运算的描述错误的是( )。D
A.在NumPy中,大小相等的数组之间的任何计算都会应用到元素级|
B.广播机制表示对数组进行扩展,使数组的shape属性值一样|
C.标量运算会产生一个与数组具有相同数量的行和列的新矩阵,其原始矩阵的每个元素都被相加、相减、相乘或者相除|
D.数组不支持算术运算符与标量之间的运算
10、请阅读下列一段示例程序:
import numpy as np
arr1 = np.array([[0], [1], [2]])
arr2 = np.array([1, 2])
result = arr1 + arr2
print(result.shape)
运行上述程序,那么最终输出的结果为( )。A
A.(3, 2)
B.(2, 3)
C.(3, 0)
D.(2, 0)
11、关于数组运算的说法中,下列描述错误的是( )。D
A.数组不需要循环遍历,就可以对每个元素执行算术运算|
B.如果两个数组的形状不同,则它们进行算术运算时会出现广播机制|
C.数组还支持使用算术运算符与标量进行运算|
D.广播机制需要扩展维度大的数组
12、已知,有如下一个二维数组:
arr2d = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
如果希望获取元素5,则可以使用( )实现。A
A.arr2d[1, 1]|
B.arr2d[1]|
C.arr2d[2]|
D.arr2d[1, 0]
13、请阅读下列一段示例程序:
arr2d = np.array([[11, 20, 5],[21, 15, 26],[17, 8, 19]])
arr2d[0:2, 0:2]
运行上述程序,它最终执行的结果为( )。A
A.array([[11, 20],[21, 15]])|
B.array([11, 20])|
C.array([21, 15])|
D.array([11, 21])
14、请阅读下面一段程序:
arr2d = np.empty((4, 4))
for i in range(4):
arr2d[i] = np.arange(i, i + 4)
arr2d[[0,4],[3,1]]
执行上述程序,它最终输出的结果为( )。B
A.array([3., 4.])|
B.程序抛出IndexError异常|
C.array([3., 5.])|
D.array([4., 4.])
15、下列关于ndarray对象索引的描述错误的是( )。D
A.ndarray对象中的元素可以通过索引和切片来访问和修改|
B.花式索引是将整数数组或列表进行索引,然后将数组或列表中的每个元素作为下标进行取值|
C.布尔索引是将一个布尔数组做为数组索引,返回的数据是布尔数组中True对应位置的值|
D.ndarray对象的多维数组索引和切片的使用方式与列表的使用方式完全相同
16、下列选项中,用来表示矢量化三元表达式的是( )。A
A.where()|
B.cumsum()|
C.sort()|
D.unique()
17、在NumPy通用函数中,用于计算元素级最大值的函数是( )。B
A.max|
B.maximum|
C.min|
D.maximal
18、下列的数组统计计算中,用于计算数组中最大值的方法是( )。A
A.max|
B.maximum|
C.min|
D.maximal
19、下列函数中,用于计算整数的绝对值的是( )。C
A.square()|
B.sqrt()|
C.abs()|
D.floor()
20、下列函数中,用于计算对角线元素和的是( )。C
A.dot ()|用于计算矩阵的乘积
B.diag ()|会返回一个矩阵的对角线元素或者创建一个对角矩阵
C.trace ()|计算对角线元素和
D.det ()用于计算矩阵的行列式
21、下列函数中,属于二元通用函数的是( )。C
A.abs()|
B.sqrt()|
C.add()|
D.floor()
22、请看如下代码:
import numpy as np
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]]
arr.sort()
arr
对代码中的NumPy数组执行sort()方法结果正确的是( )。A
A.[[2 6 7]
[2 3 6]]|
B.[[2 6 7]
[6 3 2]]|
C.[[7 6 2]
[6 3 2]]|
D.[[7 6 2]
[2 3 6]]
23、在NumPy模块中表示生成随机种子的函数是( )。A
A.seed()|
B.rand()|
C.beta()|
D.randint()
24、请阅读下面一段程序:
import numpy as np
np.arange(1, 10, 3)
运行程序,最终执行的结果是( )。B
A.array([1, 4, 7, 10])|
B.array([1, 4, 7])|
C.array([2, 5, 8])|
D.array([3, 6, 9])
25、请简述创建NumPy数组的函数有哪些?
创建NumPy数组的方法有array()、zeros()、ones()、empty()、arange()函数。
26、请简述什么是标量运算。
大小相等的数组之间的任何算术运算都会将运算应用到元素级,同样,数组与标量的算术运算也会将那个标量值传播到各个元素。当数组进行相加、相减、乘以或除以一个数字时,这些称为标量运算。
27、请简述什么是花式索引。
花式索引是NumPy的一个术语,是指用整数数组或列表进行索引,然后再将数组或列表中的每个元素作为下标进行取值。
28、请简述什么布尔型索引。
布尔型索引指的是将一个布尔数组作为数组索引,返回的数据是布尔数组中True对应位置的值。
29、请简述什么是数组的转置。
数组的转置指的是将数组中的每个元素按照一定的规则进行位置变换。NumPy提供了transpose()方法和T属性两种实现形式。其中,简单的转置可以使用T属性,它其实就是进行轴对换而已。
30、ndarray对象中存储元素的类型必须是相同的。()对
31、通过zeros()函数创建的数组中元素值都是0。()对
32、如果两个数组的形状不同,则它们是无法执行算术运算的。()错
33、如果希望创建一个数组,则只能用array()函数实现。()错
34、通过empty()函数创建的数组中所有元素值都是NaN。()错
35、创建数组时可以不指定数据的类型。()对
36、NumPy支持比Python更多的数据类型。()对
37、ndarray对象的数据类型可以通过type()方法进行转换。()错
38、NumPy数组不需要循环遍历,即可对每个元素执行批量的算术运算操作。()对
39、当满足广播机制中的任一条件后,两个大小不相等的数组也可以进行运算。()对
40、大小相等的数组之间的任何算术运算都会将运算应用到元素级。()对
41、数组使用切片和索引的方式与列表完全一样。()错
42、假设当前有一个3行3列的ndarray数组,如果想要获取第3行第2列的元素,可以使用ndarray[3,2]。()错
43、ndarray对象不支持切片操作。()错
44、NumPy中的T属性表示将轴对换。()对
45、ndarray对象中的swapaxes()方法可以将两个轴进行转换。()对
46、数组的转置其实就是轴对换操作。()对
47、如果调用transpose()方法时传入“(0,1,2)”,则数组的shape不会发生任何变化。()对
48、通用函数会对数组中的每一个元素都进行操作。()错
49、'NumPy的数组排序默认是从小到大。()对
50、all()函数用于找出数组中的唯一值。()错
51、all()函数用于检测数组中的元素是否满足某种条件。()对
52、sort()方法可以对任何轴上的数据进行排序()对
53、NumPy的random模块比Python的random模块功能更多。()对
第三章
1、下列关于Pandas库的说法中正确的是( )。C
A.Pandas中只有两种数据结构|
B.Pandas不支持读取文本数据|
C.Pandas是在NumPy基础上建立的新程序库|
D.Pandas中Series和DataFrame可以解决数据分析中一切的问题
2、关于Series结构,下列描述正确的是( )。B
A.Series是一个类似于二维数组的对象|
B.Series由一组数据和与之相关的索引两部分构成|
C.Series只能保存整数和字符串类型的数据|
D.Series的索引默认是从1开始
3、下列选项中,不能创建一个Series对象的是( )。D
A.ser_obj = pd.Series([1, 2, 3, 4, 5])|
B.ser_obj = pd.Series({2001: 17.8, 2002: 20.1, 2003: 16.5})|
C.ser_obj = pd.Series((1,2,3,4))|
D.ser_obj = pd.Series(1,2)
4、下列关于DataFrame说法正确的是( )。C
A.DataFrame结构是由索引和数据组成|
B.DataFrame的行索引位于最右侧|
C.创建一个DataFrame对象时需要指定索引|
D.DataFrame每列的数据类型必须是相同的
5、下列方法中,可以将元组转换为MultiIndex对象的是( )。A
A.from_tuples()|
B.from_arrays()|
C.from_product()|
D.from_list()
6、请阅读下面一段程序
import pandas as pd
ser_obj = pd.Series(range(1, 6), index=[5, 3, 0,4, 2])
print(ser_obj.sort_index())
执行上述程序后,最终输出的结果是( )。B
A.
5 1
3 2
0 3
4 4
2 5|
B.
0 3
2 5
3 2
4 4
5 1|
C.
5 1
4 4
3 2
2 5
0 3|
D.
2 5
4 4
0 3
3 2
5 1
7、Pandas在执行算术运算时,没有对齐的位置会使用( )进行补齐。B
A.Null|
B.0|
8、关于Pandas中数据排序,下列说法正确的是()。A
A.即可以按照行索引排序,也可以按照列索引排序|
B.sort_index()方法表示按照值进行排序|
C.sort_values()方法表示按照索引进行排序|
D默认情况下,sort_index()方法按照降序排列
9、请阅读下面一段程序:
import pandas as pd
ser_obj = pd.Series(range(1, 6), index=[5, 3, 1, 3, 2])
print(ser_obj)
执行上述程序后,最终输出的结果为( )。
10、请阅读下面一段程序:
import pandas as pd
ser_obj = pd.Series([1, 2, 3,], index=['c', 'd', 'a'])
ser_obj2 = ser_obj.reindex(['a', 'b', 'c', 'd'])
print(ser_obj2)
执行上述程序后,最终的结果为()。B
A.
a 3.0
d 2.0
c 1.0
b NaN|
B.
a 3.0
b NaN
c 1.0
d 2.0|
C.程序出现异常|
D.
c 1
d 2
a 3
11、请阅读下面一段程序:
import pandas as pd
df_obj = pd.DataFrame([[4, -1, -3, 0],[2, 6, -1, -7],[8, 6, -5, 1]])
print(df_obj.sort_values(by=1))
执行上述程序后,最终输出的结果为( )。B
A.
0 1 2 3
0 4 -1 -3 0
1 2 6 -1 -7
2 8 6 -5 1|
B.
0 1 2 3
0 4 -1 -3 0
1 2 6 -1 -7
2 8 6 -5 1|
C.
0 1 2 3
2 8 6 -5 1
1 2 6 -1 -7
0 4 -1 -3 0|
D.
3 2 1 0
0 0 -3 -1 4
1 -7 -1 6 2
2 1 -5 6 8
12、在进行算术运算时,如果希望一次性输出多个统计指标可以使用( )方法。B
A.statistics()|
B.describe()|
C.all()|
D.results()
13、关于Pandas数据读写的说法中,下列描述错误的是()。A
A.read_csv()能够读取所有文本数据|
B.read_sql()可以读取数据库中的数据|
C.to_csv()能够将结构化数据写入到csv文件中|
D.to_excel()能够将结构化数据写入到excel文件中
14、关于Pandas层次化索引,下列说法错误的是( )。B
A.层次化索引是指Pandas对象在一个轴方向上具有多层索引|
B.层次化索引至多只能有两层索引|
C.可以使用swaplevel()方法对层次化索引的位置交换顺序|
D.使用sort_index()可以对索引进行排序
15、请简述什么是Series。
Series是一个类似于一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。
16、请简述什么是DataFrame。
DataFrame是一个类似于二维数组或表格(如excel)的对象,它每列的数据可以是不同的数据类型。与Series的结构相似,DataFrame的结构也是由索引和数据组成的,不同的是,DataFrame的索引不仅有行索引,还有列索引。
17、请简述什么是层次化索引。
层次化索引可以理解为单层索引的延伸,即在一个轴方向上具有多层索引,它能以低维度形式处理高维度数据。
18、请列举几个常用的统计计算方法,并说明它们的作用。
常用的统计方法有sum、mean、median、max、min等,其中sum表示计算运算结果的和;mean表示计算运算结果的平均值;median表示计算运算结果的中位数;max/min表示计算运算结果的最大值/最小值。
请简述Pandas中有哪些常见的读写操作,并说明其作用。
常用的读写操作有read_csv、to_csv、read_sql、to_sql、read_html、read_excel、to_excel,其中read_csv和to_csv表示对csv文件的读取与写入;read_sql和to_sql表示对数据库的读取与写入;read_excel和to_excel表示对excel文件的读取与写入;read_html表示对网页中table标签数据的读取。
19、Series是一个类似于一维数组的对象。()对
20、Series可以保存任何数据类型。()对
21、在DataFrame中每列的数据都可以看做是一个Series对象。()对
22、Pandas只有Series和DataFrame两种数据结构。()错
23、DataFrame的结构是由索引和数据组成的。()对
24、Pandas中的索引对象是可以修改的。()错
25、Pandas既可以按照索引排序也可以按照数据排序。()对
26、describe()方法可以一次性输出多个统计指标。()对
27、通过from_arrays()方法可以将元组列表转换为MultiIndex对象。()错
28、层次化索引可以交换分层顺序。()对
29、read_csv()和read_table()函数没有任何区别。()错
30、'read_html()函数可以读取网页中所有的数据。()错
31、Series对象可以具有多层索引结构。()错
32、在操作DataFrame对象时,可以通过指定索引名的方式获取数据。()对
33、Series和DataFrame都支持切片操作。()对
第四章
1、下列选项中,用于删除缺失值的方法是( )。C
A.isnull()|
B.delete()|
C.dropna()|
D.fillna()
2、请阅读下面的程序:
from pandas import Series
import pandas as pd
from numpy import NaN
series_obj = Series([2, 1, NaN])
print(pd.isnull(series_obj))
执行上述程序后,最终输出的结果为( )。A
A.
0 False
1 False
2 True|
B.
0 True
1 True
2 False|
C.
0 False
1 False
2 False|
D.
0 True
1 True
2 True
3、下列选项中,关于dropna()方法描述正确的是( )。C
A.dropna()方法只会删除值为NaN的数据|
B.dropna()方法不会删除值为None的数据|
C.dropna()方法会删除值为None和NaN的数据|
D.dropna()方法只会检测缺失数据和空值
4、下列选项中,关于fillna()方法描述正确的是( )。D
A.fillna()方法只能填充替换值为NaN的数据|
B.只支持前向填充方式|
C.默认可支持填充的最大数量为1|
D.fillna()方法可以填充替换值为NaN和None的数据
5、下列选项中,关于duplicated()方法描述正确的是( )。B
A.duplicate()方法用于删除重复值|
B.duplicate()方法用于标记重复值|
C.duplicate()方法会改变原始数据|
D.duplicate()方法会将重复的数据标记为False
6、下列选项中,关于drop_duplicates()方法描述错误的是( )。A
A.仅支持单一特征数据的去重|
B.仅对Series和DataFrame对象有效|
C.数据去重时默认保留第一个数据|
D.该方法不会改变原始数据排列
7、关于异常值的说法,下列选项中描述错误的是()。A
A.异常值是指样本中明显偏离其余观测值的个别值|
B.可以使用3σ原则检测异常值|
C.可以使用Pandas中的箱线图检测异常值|
D.异常值可以使用其它的值来替换
8、下列关于数据预处理的说法中,描述不正确的是( )。D
A.数据清洗的目的是为了提高数据质量|
B. 异常值不一定要删除|
C. 通过drop_duplicates()方法可以删除重复数据|
D. concat()函数可以根据一个或多个键将不同的DataFrame进行合并
9、关于预处理的说法中,下列选项中描述不正确是( )。D
A. concat()函数可以沿着一条轴将多个对象进行堆叠|
B. merge()函数可以根据一个或多个键将不同的DataFrame进行合并|
C. 可以使用rename()方法对索引进行重命名操作|
D. unstack()方法可以将列索引旋转为行索引
10、以下关于Pandas数据转换的说法中正确的是( )。D
A.Pandas不支持重命名轴索引|
B.Pandas 通过 cut()函数能够实现哑变量操作|
C.Pandas中只能重命名列索引的名称|
D.哑变量处理就是将分类变量转换为哑变量矩阵
11、下列关于缺失值检测的说法中,正确的是()。B
A.null()和notnull()可以对缺失值进行处理|
B.dropna()方法既可以删除观测记录,也可以删除特征|
C.fillna()方法中用来替换缺失值的值只能是DataFrame对象|
D.Pandas库中的interpolate模块包含了多种插值方法
12、下列函数中,用于沿着轴方向堆叠Pandas对象的是()。A
A.concat()|
B.join()|
C.merge()|
D.combine_first()
13、关于数据重塑的说法中,下列选项描述错误的是( )。C
A.数据重塑可以将DataFrame转换为Series|
B.stack()方法可以将列索引转换为行索引|
C.对一个DataFrame使用stack()方法后返回的一定是一个Series|
D.unstack()方法可以将行索引转换为列索引
14、关于哑变量的说法中,下列选项描述错误的是( )。D
A.哑变量是人为虚设的变量|
B.哑变量在转换成指标矩阵后,其值通常为0或1|
C.Pnadas中get_dummies()函数可以对类别进行哑变量处理|
D.哑变量的使用没有实际意义
15、请简述数据清洗的目的。
数据清洗的目的在于提高数据质量,将脏数据清洗干净,使原数据具有完整性、唯一性、权威性、合法性、一致性等特点。
16、请简述产生缺失值的原因。
缺失值是指数据集中某个或某些属性的值是不完整的,产生的原因主要有人为原因和机械原因两种,其中机械原因是由于机器故障造成数据未能收集或存储失败,人为原因是由主观失误或有意隐瞒造成的数据缺失。
17、请简述异常值检测是方法。
异常值检测的方法有3σ原则和箱形图,使用3σ原则时需要保证数据遵守正态分布规则。
18、请简述Pandas中数据合并的常用方法。
Pandas中常用的数据合并方法有concat()函数、merge()函数、join()方法、combine_first()方法,其中concat()函数可以沿着一条轴将多个对象进行堆叠;merge()函数多用于主键合并、join()方法多用于索引合并;combine_first()用于对DataFrame的填充。
19、请简述什么是哑变量。
哑变量又称虚拟变量、名义变量,从名称上看就知道,它是人为虚设的变量,用来反映某个变量的不同类别。使用哑变量处理类别转换,事实上就是将分类变量转换为哑变量矩阵或指标矩阵,矩阵的值通常用“0”或“1”表示。
20、缺失数据是人为有意造成的。()错
21、dropna()方法可以删除数据中所有的缺失值。()对
22、fillna()方法处理缺失数据时可以使用Series对象填充,但不可以使用DataFrame对象填充。()错
23、使用to_numberic()函数可以对任何数据类型进行修改。()错
24、使用concat()函数合并数据时,可以通过左连接和右连接这两种方式连接。()错
25、通过merge()函数合并数据时可以指定多个键。()对
26、join()方法可以使用左连接和右连接两种方式连接数据。()对
27、pivot()方法只适用于DataFrame对象。()对
28、rename()方法可以重命名索引名。()对
29、drop_duplicated()方法可以删除重复值。()错
30、'在箱形图中超出上界和下界的值称为异常值。()对
31、具有多层索引的DataFrame对象经过stack()重塑后,返回的是一个Series对象。()错
32、使用merge()函数进行数据合并时,不需要指定合并键。()错
33、哑变量可以用来反映某个变量的不同类别。()对
第五章
1、关于分组聚合过程的说法中,下列描述不正确的是( )。D
A.拆分是指将数据集按照一些标准拆分为若干个组|
B.应用是指将某个函数或方法应用到每个分组|
C.合并是指将产生的新值整合到结果对象中|
D.只能对纵轴方向上的数据进行分组
2、下列关于groupby()方法的说法中,描述正确的是( )。C
A.用于将数据集实现分组与聚合操作|
B.调用groupby()方法返回一个DataFrameBy对象|
C.调用groupby()方法返回一个GroupBy对象|
D.groupby()方法只能将数据集按照纵轴方向进行分组
3、下列选项中,不属于groupby()方法分组方式的是( )。D
A.列表或数组|
B.DataFrame中某列的名称|
C.字典或Series|
D.集合
4、关于groupby()方法的返回值,下列说法错误的是( )。D
A.groupby()方法返回的是一个GroupBy对象|
B.返回的GroupBy对象采用的是惰性计算|
C.使用for循环可以遍历该对象中的分组信息|
D.groupby()方法没有返回值
5、请阅读下面一段程序:
import pandas as pd
df = pd.DataFrame({'key1': ['A', 'A', 'B', 'B'],
"data1": ['3', 3, 5, 8],
"data2": [3, 5, None, 7]})
print(df.groupby('key1').mean())
执行上述程序后,最终输出的结果为()。B
A.程序出现异常|
B.
data2
key1
A 4.0
B 7.0|
C.
data1 data2
key1
A 3.0 4.0
B 6.5 7.0|
D.
data1 data2
key1
B 6.5 7.0
6、关于agg()方法的用法中,下列描述错误的是()。C
A.可以对每列数据应用同一个函数|
B.可以对一列数据应用不同的函数|
C.每列的数据只能使用相同的函数|
D.可以对不同的列使用不同的函数
7、关于transform()方法的说法中,下列描述错误的是()。C
A.transform()方法可以使用广播|
B.使用transform()方法可以返回一个与分组大小相等的数组|
C.transform()方法只能使用内置方法对数据进行转换操作|
D.transform()方法对DataFrame和Series都适用
8、关于apply()方法的说法中,下列描述正确的是()。A
A.apply()方法是对DataFrame|
B.apply()方法能够实现所有agg方法的功能|
C.apply()方法和map方法都能够进聚合操作|
D.apply()方法只能够对行列进行操作
9、关于agg()方法的使用中,下列描述错误的是( )。A
A. agg()方法中func参数只能传入一个函数|
B. agg()方法中func参数可以传入多个函数|
C. agg()方法中func参数可以传入自定义函数|
D. agg()方法不能对产生的标量值进行广播
10、请阅读下面一段程序:
import pandas as pd
print(pd.DataFrame([[2, 3],] * 3, columns=['A', 'B']).apply(lambda x: x + 1))
执行上述程序后,最终输出的结果为( )。C
A.
A B
0 3 2
1 3 2
2 3 2
|
B.
A B
0 2 3
1 2 3
2 2 3
|
C.
A B
0 3 4
1 3 4
2 3 4
|
D.
A B
0 4 3
1 4 3
2 4 3
11、请简述分组聚合的原理。
在Pandas中,分组是指使用特定条件将原数据划分为多个组,聚合在这里指的是,对每个分组中的数据执行某些操作(如聚合、转换等),最后将计算的结果进行整合。
12、请简述groupby()方法的几种分组方式。
常用的分组方式主要有以下4种:1.列表或数组,其长度必须与待分组轴一样。2.DataFrame对象中某列的名称。3.字典或Series对象,给出待分组轴上的值与分组名称之间的对应关系。4.函数,用于处理轴索引或索引中的各个标签。
13、GroupBy对象支持迭代。()对
14、groupby()方法可以将DataFrame中的某个列名做为分组键。()对
15、groupby()方法不能使用函数做为分组键。()错
16、使用groupby()方法进行分组时,其分组键中的数据类型必须是相同的。()错
17、只要使用groupby()方法分组,就会产生一个DataFrameGroupby对象()错
18、使用agg()方法进行聚合运算会对产生的标量值进行广播。()错
19、使用transform()方法进行聚合运算,其结果可以保持与原数据形状相同。()对
20、apply()方法可以将某个函数应用到DataFrame对象的每个数据。()错
21、使用Series对象做为分组键时,必须保证Series对象的长度与被分组数组的长度相等。()错
22、'使用字典做为分组键时,字典的键必须和数据中的列名相映射。()对
23、agg()方法可以使用用户自定义的函数。()对
24、使用transform()方法进行聚合运算,所得对象的行索引与被分组对象的行索引大小一定相等。()对
25、通过agg()方法进行聚合时只能接收单个函数。()错
第六章
1、下列图表中,适用于比较跨类别数据的是()。D
A、直方图|
B、折线图|
C、饼图|
D、散点图
2、下列图表中,可以清晰地反映出各数据系列的百分比情况的是()。C
A、直方图|
B、折线图|
C、饼图|
D、散点图
3、下列图表中,可以清晰地反映出数据变化趋势的是()。B
A、直方图|
B、折线图|
C、饼图|
D、散点图
4、下列图表中,能够识别异常值的是()。A
A、箱形图|
B、折线图|
C、饼图|
D、散点图
5、关于Matplotlib的说法中,下列描述正确的是()。B
A、Matplotlib是一个Python 3D绘图库|
B、它使用简单,仅用几行代码就能生成各种图表|
C、仅仅适用于IPython平台|
D、只能输出PNG或PDF格式
6、在创建Figure对象时,可以指定哪个参数来设置画布的尺寸?()C
A、num|
B、dpi|
C、figsize|
D、facecolor
7、在创建Figure对象时,可以指定哪个参数来给画布添加背景颜色?()D
A、num|
B、dpi|
C、figsize|
D、facecolor
8、下列选项中,可以一次性创建多个子图的是()。D
A、figure()|
B、subplot()|
C、add_subplot()|
D、subplots()
9、下列函数中,可以为图表设置标题的是()。C
A、xlim()|
B、xlabel()|
C、title()|
D、legend()
10、下列函数中,可以设置当前图形x轴范围的是()。B
A、xlabel()|
B、xlim()|
C、title()|
D、legend()
11、下列函数中,可以为图表设置图例的是()。A
A、legend()|
B、xlabel()|
C、title()|
D、xlim()
12、下列pyplot模块的函数中,可以绘制条形图的是()。A
A、bar()|
B、hist()|
C、pie()|
D、scatter()
13、下列pyplot模块的函数中,可以绘制直方图的是()。B
A、bar()|B、hist()|C、pie()|D、scatter()
14、下列pyplot模块的函数中,可以绘制饼图的是()。C
A、bar()|B、hist()|C、pie()|D、scatter()
15、下列pyplot模块的函数中,可以绘制散点图的是()。D
A、bar()|B、hist()|C、pie()|D、scatter()
16、下列函数中,用于保存当前生成的图表的是()。C
A、figure()|B、hist()|C、savefig()|D、show()
17、下列选项中,用于绘制单变量分布的函数是()。A
A.displot()|
B.joinplot()|
C.pairplot()|
D.boxplot()
18、下列选项中,用于绘制双变量分布的函数是()B
A.displot()|
B.joinplot()|
C.pairplot()|
D.boxplot()
19、下列选项中不属于Seaborn中分类数据可视化库的是()。D
A.分类数据散点图|
B.分类数据的分布图|
C.分类数据的统计估算图|
D.分类数据的直方图
20、下列关于Bokeh库描述不正确的是()。C
A.针对浏览器使用的交互式可视化库|
B.提供优雅、简洁的通用图形构建|
C.不适用于大量的数据集|
D.能够快速地、轻松地创建交互图
21、下列参数中,调整后显示中文的是()。C
A.lines.kinestyle|
B.lines.linewidth|
C.font.sans-serif|
D.axes.unicode_minus
22、下列代码中,绘制散点图的是()。A
A.plt.scatter(x,y)|
B.plt.plot(x,y)|
C.plt.legend('upper left')|
D.plt.xlabel('散点图')
23、下列关于常见图表说法正确的是()。C
A.散点图不能在子图中绘制|
B.散点的x轴刻度必须为数值|
C.折线图可以用作查看特征间的趋势关系|
D.箱形图可以用来查看特征间的相关关系
24、请简述什么是数据可视化。
数据可视化是指将数据以图表的形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程。
25、请简述数据可视化的意义。
数据可视化旨在借助图形化手段,清晰有效地将数据中的各种属性和变量呈现出来,使用户可以从不同的维度观察数据,从而对数据进行更深入地观察和分析。
26、请简述直方图与条形图的区别。
(1)条形图是用条形的长度表示各类别频数的多少,其宽度(表示类别)则是固定的。直方图是用面积表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义。
(2)由于分组数据具有连续性,所以直方图的各矩形通常是连续排列的,而条形图则是分开排列的。
(3)条形图主要用于展示分类数据,而直方图则主要用于展示数据型数据。
27、请简述什么是Seaborn库。
Seaborn 是基于Matplotlib的可视化库,专攻于统计可视化,使数据可视化更加赏心悦目。此外,Seaborn 可以和Pandas进行无缝链接,让初学者更容易上手。
28、按以下要求编写程序:
(1)创建一个0~50的数组nums,包含0和50;
(2)通过subplot()函数将绘图区域分为2*1的矩阵区域;
(2)在编号为1的区域绘制nums数据。
import matplotlib.pyplot as plt
import numpy as np
nums = np.arange(0, 51)
plt.subplot(211)
plt.plot(nums)
plt.show()
29、请按照下面的要求绘制图形:
(1)导入numpy和matplotlib.pyplot,分别取别名为np与plt;
(2)创建包含50个随机数的数组arr;
(3)绘制直方图,它的数据为arr,共7个条柱,条柱的颜色为青色;
(4)调用show()函数展示图形。
import matplotlib.pyplot as plt
import numpy as np
arr = np.random.randn(50)
plt.hist(arr, bins=7, color='c')
plt.show()
30、请使用distplot()函数绘制一个包含50个随机数的直方图
import numpy as np
import seaborn as sns
%matplotlib inline
sns.set()
np.random.seed(0)
arr = np.random.randn(50)
ax = sns.distplot(arr, bins=10
31、直方图可以利用方块的高度来反映数据的差异。()对
32、散点图包含的数据点越少,比较的效果就会越好。()错
33、箱形图提供了一种只用5个点对数据集做简单总结的方式。()对
34、Figure对象可以理解为一张空白的画布,用于容纳图表的各种组件。()对
35、pyplot模块中默认拥有一个Figure对象。()对
36、我们可以调用new()函数构建一张新的空白画布。()错
37、Figure对象允许划分为多个绘图区域。()对
38、subplot(323)和subplot(3,2,3)是等价的。()对
39、位于左上角的子图编号为1。()对
40、如果希望一次性创建一组子图,则可以通过subplot()函数进行实现。()错
41、每调用一次add_subplot()方法会规划画布划分子图,且只会添加一个子图。()对
第七章
1、请阅读下面一段程序:
import pandas as pd
date_index = pd.to_datetime(['20180908', '20181008', '20181108'])
date_index[2]
运行上述程序,它最终执行的结果为()。A
2、请阅读下面一段程序:
import pandas as pd
import numpy as np
date_list = ['2015/06/01', '2017/02/01','2016.6.1','2018.6.1']
date_index = pd.to_datetime(date_list)
date_se = pd.Series(np.arange(4), index=date_index)
date_se[3]
运行程序,它最终执行的结果为()。B
A、4|B、3|C、2|D、1
3、请阅读下面一段程序:
import pandas as pd
import numpy as np
from datetime import datetime
date_list = ['2015/06/01', '2016/02/01','2016.6.1','2018.6.1']
date_index = pd.to_datetime(date_list)
date_se = pd.Series(np.arange(4), index=date_index)
________
若需要获取2016-06-01对应的数据,则下列选项中可以填写到横线处的是()。C
4、通过date_range()函数创建DatetimeIndex对象时,可以设置哪个参数指定起始日期?()
A、freq|B、periods|C、end|D、start
5、通过date_range()函数创建DatetimeIndex对象时,可以设置哪个参数指定终止日期?()
A、freq|B、periods|C、end|D、start
6、通过date_range()函数创建DatetimeIndex对象时,可以设置哪个参数指定产生多少个时间戳索引值?()B
A、freq|B、periods|C、end|D、start
7、通过date_range()函数创建DatetimeIndex对象时,可以设置哪个参数来改变计时单位?()A
A、freq|B、periods|C、end|D、start
8、通过date_range()函数创建DatetimeIndex对象时,可以设置()参数来规范时间戳。A
A、normalize|B、periods|C、end|D、freq
9、创建一个DatetimeIndex对象的代码如下:
pd.date_range('2018/08/10', '2018/08/15')
默认情况下,该对象中时间戳的频率为()。B
A、H|B、D|C、S|D、T
10、通过date_range()函数创建DatetimeIndex对象时,如果只是传入了开始日期,则还需要用()参数指定产生多少个时间戳。C
A、freq|B、end|C、periods|D、start
11、下列选项中,用来表示时间序列中的频率为每小时的是()D
A、S|B、B|C、D|D、H
12、下列选项中,用来表示时间序列中的频率为每周六的是()D
A、WOM-2MON|B、W-FRI|C、W-SUN|D、W-SAT
13、创建DatetimeIndex对象的代码如下:
pd.date_range(start='2018/2/1', end='2018/2/28', freq=________)
如果希望生成的时间戳为每周日,则下列选项中可以填写到横线处的是()。C
A、WOM-2MON|B、W-FRI|C、W-SUN|D、W-SAT
14、关于时间序列的移动,下列说法错误的是()。B
A、移动是指沿着时间轴方向将数据进行前移或后移|
B、时间序列移动后,索引也会发生变化|
C、数据移动后会出现边界情况|
D、无论时间序列的数据怎么移动,索引是不会发生任何变化的
15、下列选项中,用来表示Pandas中的时期的是()。A
A、Period|B、Timestamp|C、Interval|D、Series
16、请阅读下面一段程序:
period = pd.Period(2010)
print(period+5)
运行上述程序,它最终输出的结果为()。A
A、2015|B、2014|C、2013|D、2012
17、请阅读下面一段程序:
period = pd.Period("2011-01")
other_period = pd.Period("2012/06")
print(period - other_period)
运行上述程序,它最终输出的结果为()。B
A、17|B、-17|C、-18|D、18
18、下列方法中,能够转换时期频率的是()。C
A、shift()|B、rolling()|C、asfreq()|D、resample()
19、下列方法中,能够对常规时间序列数据重新采样的是()。D
A、shift()|B、rolling()|C、asfreq()|D、resample()
20、当使用resample()方法重新采样时,下列哪个参数可以确定采样的闭合区间?()D
A、label|B、fill_method|C、how|D、closed
21、关于降采样的说法中,下列描述错误的是()。C
A、降采样是将高频率数据聚合到低频率数据|
B、降采样的时间颗粒会变大|
C、降采样的数据量是增加的|
D、降采样就相当于另外一种形式的分组聚合操作
22、下列方法中,用来创建一个滑动窗口的是()。B
A、shift()|B、rolling()|C、asfreq()|D、resample()
23、请阅读下面一段程序:
roll_window = ser_obj.rolling(window=10)
有关上述程序,下面描述错误的是()。A
24、什么是时间序列?
时间序列是指多个时间点上形成的数值序列。
25、时间序列数据主要有哪些?
时间戳、时期、时间间隔
26、请阅读下面一段程序:
import pandas as pd
date_index = pd.to_datetime(['20180908', '20181008', '20181108'])
date_index[1]
程序最终执行的结果是什么?
Timestamp('2018-10-08 00:00:00')
27、请阅读下面一段程序:
import pandas as pd
date_list = ['2015/06/01', '2017/06/01', '2016/08/01','2016.6.1','2018.6.1']
date_index = pd.to_datetime(date_list)
date_ser = pd.Series(np.arange(5), index=date_index)
date_ser.sort_index().truncate(after='2016-7-31')
运行上述程序,它最终执行的结果是什么?
2015-06-01 0
2016-06-01 3
dtype: int32
28、请简述什么是Pandas中的频率。
Pandas中的频率是由一个基础频率和一个乘数组成的,比如,“5D”表示每5天。
29、什么是时间序列的移动?
移动是指沿着时间轴方向将数据进行前移或后移。
30、请阅读下面一段程序:
period = pd.Period(2010)
print(period+5)
运行上述程序,它最终输出的结果是什么?
2015
31、请阅读下面一段程序:
period = pd.Period("2011-01")
other_period = pd.Period("2012/06")
print(period - other_period)
运行上述程序,它最终输出的结果是什么?
-17
32、什么是重采样?
重采样是指将时间序列从一个频率转换到另一个频率的处理过程。
33、什么是滑动窗口?
滑动窗口指的是根据指定的单位长度来框住时间序列,从而计算框内的统计指标。
34、什么是平稳时间序列?
对于一个时间序列来说,如果它的均值没有系统的变化(无趋势),方差没有系统变化,并且严格消除了周期性的变化,就称为是平稳的。
35、请简述建立ARIMA模型的基本步骤。
(1) 获取被观测的时间序列数据;
(2) 根据时间序列数据进行绘图,观测是否为平稳时间序列。对于非平稳时间序列,需要进行d阶差分运算,转化为平稳时间序列。
(3) 对以上平稳的时间序列,分别求得其自相关系数ACF和偏自相关系数PACF,通过对自相关图和偏自相关图的分析,得到最佳的阶层p和阶数q。
(4) 根据上述计算的d、q、p得到ARIMA模型,然后对模型进行检验。
36、最基本的时间序列就是以时间戳为索引的Series对象。()对
37、时间序列是不能使用位置索引来获取数据。()错
38、在操作时间戳索引时,可以直接使用任何日期字符串来选取子集。()错
39、如果把年份字符串作为索引使用,则可以获取到属于这一年的所有数据。()对
40、在使用date_range()函数创建DatetimeIndex对象时,必须要保证同时指定start、end、periods、freq中至少三个参数。()对
41、在创建DatetimeIndex对象时,如果只是指定了开始日期与结束日期,则默认生成的时间戳是按小时计算的。()错
42、通过date_range()函数创建DatetimeIndex对象时,如果只是传入了开始日期或结束日期,则还需要用periods参数指定产生多少个时间戳。()对
43、起始日期与结束日期定义了时间序列索引的严格边界。()对
44、如果希望时间序列中的时间戳不再是固定的每天,则可以在创建DatetimeIndex时对freq参数进行修改。()对
45、创建时间序列时,如果起始时间或结束时间中带有与时间有关的信息,则会保留时间信息。()对
46、在时间序列中,默认生成的时间戳是按天计算的。()对
47、时间序列的基础频率后面还可以跟着一个日期偏移量。()对
48、时间序列的移动是指沿着纵轴方向将数据进行前移或后移。()错
49、时间序列在前移或后移数据时,索引是一直保持不变的。()对
50、时间序列的移动一定会出现边界情况。()对
51、调用shift()方法时传入一个正数,这表明沿着纵轴方向移动一次()对
52、若调用shift()方法时传入一个正数,则表明时间序列中的数据会沿着纵轴方向移动一次。()对
53、若调用shift()方法时传入一个正数,则表明时间序列中的数据会沿着纵轴反方向移动一次。()错
54、Period对象不支持参与数学运算。()错
55、如果Period对象加上或者减去一个整数,则会根据具体的时间单位进行位移操作()对
56、如果相同频率的两个Period对象进行数学运算,那么计算结果为它们的单位数量。()对
57、PeriodIndex是用来指代一系列时间段的索引结构。()对
58、降采样的时间颗粒会变大。()对
59、如果是将低频率数据转换到高频率数据,则称为降采样。()错
60、在降采样时,时间序列的数据量是增加的。()错
61、时间序列数据在升采样时,总体的数据量是增加的。()对
62、升采样的时间颗粒是变小的。()对
63、时间序列分析没有任何硬性的要求。()错
64、非平稳的时间序列需要通过差分预算来转变为平稳的时间序列。()对