您现在的位置是:首页 >技术杂谈 >【数据处理与分析模块】复习题网站首页技术杂谈
【数据处理与分析模块】复习题
一、单项选择题
(01)Numpy 中向量转成矩阵使用( C )
A)random
B)reval
C)reshape
D)arange
(02)以下程序输出结果为( B )
import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr.shape)
A)(2, 3)
B)(3, 3)
C)(3, 2)
D)(2, 2)
(03)查看 Series 的某一部分数据,可以使用以下哪种方法( A )
A)head()
B)rshow()
C)isnull()
D)print()
(04)下列选项可以进行主键合并的是( D )
A)combine_first()
B)append()
C)concat()
D)merge()
(05)如何在 DataFrame 中查找缺失值的数量?(C )
A)df. missing_values( )
B)df. count_missing( )
C)df. isnull(). sum()
D)df. check_null( )
(06)Pandas 默认使用什么作为分隔符读取 CSV 文件?( B )
A)空格
B)逗号
C)分号
D)制表符
(07)使用 matplotlib 创建等高线的语法是什么?( D )
A)plt. plot (x,y)
B)plt. scatter(x,y)
C)plt. bar(x,y)
D)plt.contourf(X,Y,Z)
(08)以下哪个命令用于在 Matplotlib 中设置绘图的大小?( C )
A)plt.size()
B)plt.height()
C)plt.figure(figsize=(width, height))
D)plt.width()
(09)以下哪个命令用于在 Matplotlib 中添加图例?( D )
A)plt.title()
B)plt.xlabel()
C)plt.ylabel()
D)plt.legend()
(10)如何在 Matplotlib 中设置绘图的标题?( A )
A)plt.title()
B)plt.xlabel()
C)plt.ylabel()
D)plt.show()
(11)在 Matplotlib 中,用什么命令显示绘图?( A )
A)plt.show()
B)plt.plot()
C)plt.xlabel()
D)plt.ylabel()
(12)下面哪个模块包含了 matplotlib 库中大多数常用的函数和类?( C )
A)numpy
B)pandas
C)pyplot
D)scipy
(13)如何在 DataFrame 中选择多列数据?( D )
A)df. col_1. col_2
B)df. select(’ col_1’, col_2’)
C)df. get(’ col_1’, col_2’)
D)df[[’ col_1’, col_2’]]
(14)如何以降序排列 DataFrame 中的数据?( B )
A)df. sort( column=’ col_name’, ascending= True)
B)df. sort_values(’ col_name’, ascending= True)
C)df. order_by(’ col_name’, ascending= False)
D)df. rank( column=’ col_name’, ascending= False)
(15)如何将 DataFrame 中的数据写入 CSV 文件?( C )
A)pd. to_csv(’ file. csv’)
B)df. write_csv(’ file. csv’)l
C)df. to_csv(’ file. csv’)
D)pd. write_csv(’ file. csv’)
(16)如何将 DataFrame 中的列重命名?( A )
A)df. rename( columns={’ col_1’:’ new_col_1’})
B)df. column_rename(’ col_1’, new_col_1’)
C)df. col_1. rename(’ new_col_1’)
D)df. col_1. column_rename(’ new_col_1’)
(17)以下程序输出结果为( B )
import numpy as np
arr = np.array([3,6,9])
arr2 = np.power(arr,2)
print(arr2)
A)[3 6 9]
B)[9 36 81]
C)[6 12 18]
D)[3 6]
(18)以下程序输出结果为( D )
import numpy as np
arr = np.around(11.4586,2)
print(arr)
A)11.45
B)11.4586
C)11
D)11.46
(19)以下程序输出结果为( A )
import numpy as np
arr = np.arange(36).reshape(1,3,3,4)
print(arr.shape)
arr = np.transpose(arr,[1,2,3,0]).shape
print(arr)
A)(1, 3, 3, 4)
(3, 3, 4, 1)
B)(1, 3, 3, 4)
(4, 3, 3, 1)
C)(1, 3, 3, 4)
(1, 2, 3, 4)
D)(1, 3, 3, 4)
(1, 3, 3, 4)
(20)以下程序输出结果为( C )
import numpy as np
x=np.arange(1,13)
a=x.reshape(4,3)
print(a[2] [1])
A)6
B)7
C)8
D)9
(21)下面哪个属性不是NumPy中数组的属性( D )
A)ndim()
B)size()
C)shape()
D)add()
(22)以下程序输出结果为( A )
import numpy as np
arr = np.floor(11.5586)
print(arr)
A)11.0
B)12.0
C)11.5
D)11.56
(23)一个简单的Series是由( C )的数据组成的
A)两个数组
B)三个数组
C)一个数组
D)四个数组
(24)以下( B )函数可以在绘制图表时,设置x轴的名称
A)xlim()
B)xlabel()
C)xticks()
D)xtitle()
(25)在pandas中,以下哪个函数无法实现合并数据?( A )
A)agg()函数
B)concat()函数
C)join()方法
D)merge()函数
(26)以下哪个函数用于绘制折线图?( B )
A)scatter()
B)plot()
C)pie()
D)bar()
(27)在NumPy模块中,以下哪个函数不是算数函数?( C )
A)subtract()
B)divide()
C)hypot()
D)add()
(28)在pandas中以下哪个方法用于向csv文件中实现写入工作?( C )
A)to_excel()
B)read_csv()
C)to_csv()
D)save_csv()
(29)以下哪个函数可以生成一个指定范围的随机数组?( A )
A)randint()
B)rand()
C)random()
D)randm()
(30)一般来说,numpy-matplotlib-pandas是数据分析与可视化的一条学习路径,请问以下对这三个库的说明中不正确的是?( A )
A)pandas仅支持一维和二维数据分析,多维数据分析要用numpy
B)matplotlib支持多种数据展示,使用pyplot子库即可
C)numpy底层采用C实现,因此运行速度很快
D)pandas也包含一些数据展示函数,可不用matplotlib
(31)以下哪个语句能够生成一个n*n的正方形矩阵,且其对角线值为1,其余位置的值为0?( B )
A)np.zeros((n,n))
B)np.eye(n)
C)np.full((n,n),1)
D)np.ones((n,n))
(32)Numpy 统计数组元素个数的方法是?( C )
A)ndim()
B)shape()
C)size()
D)itemsize()
(33)Matplotlib中的那个包提供了一批操作和绘图函数?( A )
A)pyplot
B)bar
C)rcparams
D)pprint
(34)以下说法错误的是?( C )
A)饼图一般用于表示不同分类的占比情况
B)箱线图展示了分数线的位置
C)散点图无法反映特征间的统计关系
D)词云对于文本中出现频率较高的关键词予以视觉上的突出
(35)以下关于绘图标准流程说法错误的是?( B )
A)绘制简单的图形可以使用缺省的画布
B)添加图例可以在绘制图形之前
C)添加X轴、Y轴的标签可以在绘图之前
D)修改 X 轴、Y 轴的标签和绘制的图形没有先后
(36)以下关于缺失值检测的说法中,正确的是?( D )
A)null和notnull 可以对缺失值进行处理
B)dropna方法既可以删除观测记录,还可以删除特征
C)fillna方法中用来替换缺失值的值只能是数据框
D)pandas库中的interpolate 模块包含了多种插值方法
(37)利用下面哪个可视化绘图可以发现数据的异常点?( C )
A)密度图
B)直方图
C)盒图
D)概率图
二、填空题
(01)Fillna函数中的参数method若设置为’ffill’则表示 ① 用前一个非NaN值 填充NaN值。
(02)Pandas中的 ② merge 函数主要用于将各种JOIN操作运用在你的数据上。
(03)Python数据分析与可视化中,绘制线型图函数为 ③ plot ;绘制散点图函数为 ④ scatter ;绘制柱状图函数为 ⑤ bar ;绘制直方图函数为 ⑥ hist ;绘制饼状图函数为 ⑦ pie ;绘制等高线图函数为 ⑧ contour 。
(04)Series对象包装的数据是numpy中的一维数组,其具有两个重要的属性,分别为 ⑨ values 和 ⑩ index 。
(05)学习Python爬虫模块前,我们有必要先熟悉网页的基本结构,网页一般由三部分组成,分别是 html 、 ⑫ css 和 ⑬ javascript 。
(06)Python的标准库urllib.parse模块中提供了分别用来编码和解码的方法,分别是 ⑭ quote 与 ⑮ unquote 方法。
(07)Python 提供了多个用来编写爬虫程序的库,除了前面已经介绍的urllib库之外,还有一个很重的 ⑯ requests 库。
(08)Python操作Excel文档,需用到Openpyxl 模块,Openpyxl 中有三个不同层次的类,分别为 ⑰ Workbook 、 ⑱ Worksheet 、 ⑲ Cell 。
(09)Python数据分析过程中,导入数据主要用到 ⑳ read_csv 方法。
(10)若arr = np.arange(12).reshape(3,4);则arr[(0,1),(1,3)]值分别为 ① 1 、 ② 7 ;arr[1:2,(0,3)]对应的值分别为 ③ 4 、 ④ 7 ;arr.ndim的值是 ⑤ 2 。
(11)创建一个范围在(0, 1)之间的长度为12的等差数列的语句是 ⑥ np.linspace(0, 1, 12) 。
(12)一个DataFrame对象的属性values和ndim分别指 ⑦ 数据元素 和 ⑧ 维度 。
(13)reindex方法中的参数method可取值为‘ffill’和‘bfill’,分别指 ⑨ 向前填充 和 ⑩ 向后填充 。
(14)数组转置是数据重塑的一种特殊形式,可以通过 ⑪ transpose 方法或数组的T属性实现。
(15)Pandas中删除数据时,行列数据通过 ⑫ axis 参数确定删除的是行还是列。
(16)Pandas中的 ⑬ groupby 方法可以根据索引或字段对数据进行分组。
(17)Pandas中直接删除数据的方法是 ⑭ drop 。
(18)Series是一种一维数组对象,包含一个值序列。Series中数据通过 ⑮ 索引 访问。
(19)Pandas中与set_index相关,用于还原索引的方法是 ⑯ reset_index 。
(20)处理数据缺陷的常用方法 ⑰ dropna 、 ⑱ fillna 、⑲ isnull 、 ⑳ notnull 。
三、判断题【非标准答案】
(01)两个索引不一致的series进行算数运算会出错。( ✗ )
解析:若两个 Series 在进行运算时索引不一致,Pandas会尝试自动对齐两者的索引并进行运算。对于没有对应的索引的位置,结果会被标记为 NaN。
(02)创建DataFrame 时会自动加上索引,且全部列会被有序排列。( ✓ )
(03)Pandas中数据的重建索引指对索引重新排序而不是修改。( ✗ )
解析:数据的重建索引实际上是创建一个新对象,其数据符合新的索引。这可能涉及数据的排序,但也可能涉及修改索引。
(04)Pandas中的数据对象的索引可以随时被修改。( ✓ )
解析:可以通过 DataFrame 或 Series 的 index 属性进行修改。
(05)利用merge方法合并数据时允许合并的dataframe之间没有连接键。( ✗ )
解析:在使用 merge 合并数据时,必须指定一个或多个连接键。
(06)Pandas中利用merge函数合并数据表时默认的是内连接方式。( ✓ )
解析:默认情况下,merge 函数会执行内连接,只保留两个 DataFrame 中键相匹配的行。
(07)只要使用groupby方法分组,就会产生一个dataframegroupby对象。( ✓ )
解析:groupby 方法会返回一个 DataFrameGroupBy 对象,可以对其进行聚合、转换或过滤等操作。
(08)subplot(323)和subplot(3,2,3)是等价的。( ✓ )
解析:这两种写法都表示创建一个3行2列的子图,并选中第3个位置的子图。
(09)创建Series时如果指定了index,则只能用index访问数据。( ✗ )
解析:即使为 Series 指定了 index,仍然可以使用整数位置索引访问数据。
(10)Pandas是基于Numpy的数据分析包,是为解决数据分析任务创立。( ✓ )
解析:Pandas 是为了解决数据分析任务而创建的,它基于 NumPy,并提供了更多适合数据分析的功能。
(11)创建Series时如果指定了 index,则只能用 index 访问数据。( ✗ )
解析:即使为 Series 指定了 index,仍然可以使用整数位置索引访问数据。
(12)创建DataFrame时会自动加上索引,且全部列会被有序排列。( ✓ )
(13)Pandas中数据对象的索引可以随时被修改。( ✓ )
解析:可以通过 DataFrame 或 Series 的 index 属性进行修改。
(14)Pandas中数据的重建索引指对索引重新排序而不是修改。( ✗ )
解析:数据的重建索引实际上是创建一个新对象,其数据符合新的索引。这可能涉及数据的排序,但也可能涉及修改索引。
(15)交叉表是一种特殊的透视表,主要用于计算分组频率。( ✓ )
解析:交叉表(crosstab)是一种用于计算分组频率的特殊透视表。
(16)两个索引不一致的series进行算数运算会出错。( ✗ )
解析:若两个 Series 在进行运算时索引不一致,Pandas会尝试自动对齐两者的索引并进行运算。对于没有对应的索引的位置,结果会被标记为 NaN。
(17)Pandas中的apply方法能将函数应用于每一列。( ✓ )
解析:apply 方法可以将函数应用到 DataFrame 或 Series 的每一列或每一行。
(18)Pandas中可以通过行索引或行索引位置的切片形式选取行数据。( ✓ )
解析:可以使用 loc 方法通过行索引选取数据,也可以使用 iloc 方法通过行索引位置选取数据。
(19)Pandas中不可以通过query方法查询数据。( ✗ )
解析:在 Pandas 中,可以使用 query 方法查询数据。
(20)Pandas使用loc和isin函数配合使用,按指定条件对数据进行提取。( ✓ )
解析:通过 loc 和 isin 可以对数据进行条件过滤和提取。
四、程序设计题【非标准答案】
(01)寻找数组np.random.randint(1,10,size=(5,5))中所有的奇数,并将所有奇数替换为0。
import numpy as np
# 创建随机数组
arr = np.random.randint(1, 10, size=(5, 5))
# 将所有奇数替换为0
arr[arr % 2 == 1] = 0
(02)从1—50之间的均匀地产生随机数字20个,存储数组d中,替换大于等于30数为0,并获取给定数组d中前5个最大值的位置。
import numpy as np
# 创建随机数组
d = np.random.uniform(1, 50, 20)
# 替换大于等于30数为0
d[d >= 30] = 0
# 获取给定数组d中前5个最大值的位置
max_index = np.argsort(d)[-5:]
(03)创建一个Series,包含1组元素,且每个值为0-100的均匀分布随机值,index为a-j,
请分别筛选出:
① 标签为b、c的值为多少?
② Series中第4到第6个值是那些?
③ Series中大于50 的值有那些?
import numpy as np
import pandas as pd
data = np.random.rand(10)*100
index = list('abcdefghij')
s = pd.Series(data = data, index = index)
# 标签为 b, c 的值
a = s[['b', 'c']]
# Series中第4到第6个值
b = a[3:6]
# Series中大于50的值
c = s[s > 50]
(04)分别通过字典/数组的方式,创建以下要求的Series
Zhangsan 90.0
wangwu 89.5
lilei 68.0
Name:作业1, dtye:float64
import numpy as np
import pandas as pd
# 通过字典创建
dic = {'Zhangsan':90.0, 'wangwu':89.5, 'lilei':68.0}
s1 = pd.Series(dic)
# 通过数组创建
data = np.array([90.0, 89.5, 68.0])
index = ['Zhangsan', 'wangwu', 'lilei']
s2 = pd.Series(data, index)
(05)如下图创建DataFrame(4*4,值为0-100的随机数),通过索引得到以下值:
① 索引得到b,c列的所有值;
② 索引得到第三第四行的数据;
③ 按顺序索引得到two,one行的值;
④ 索引得到大于50的值。
import numpy as np
import pandas as pd
# 创建DataFrame
data = np.random.rand(16).reshape(4,4)*100
index = ['one','two','three','four']
columns = ['a','b','c','d']
df = pd.DataFrame(data, index, columns)
# 索引得到b,c列的所有值
a = df[['b', 'c']]
# 索引得到第三第四行的数据
b = df[2:4]
# 按顺序索引得到two,one行的值
c = df.loc[['tow', 'one']]
# 索引得到大于50的值
d = df[df > 50]
(06)编写程序,创建如图所示数据集,并截取出方框中的数据。
import pandas as pd
import numpy as np
# 创建数据集
data = np.arange(12).reshape(3, 4)
df = pd.DataFrame(data, index=['a', 'b', 'c'], columns=['A', 'B', 'C', 'D'])
# 截取B,C,D列
df.iloc[:,1:4]
(07)编写程序绘制如图所示图形,其中娱乐:500;育儿:600;饮食:700;房贷:800;交通:900;其它:400
import matplotlib.pyplot as plt
# 设置中文为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 创建标签和数值
labels = ['娱乐', '育儿', '饮食', '房贷', '交通', '其它']
values = [500, 600, 700, 800, 900, 400]
# 绘制饼图
plt.pie(values, labels=labels, autopct='%1.2f%%')
# 展示图形
plt.show()
(08)2008 年北京奥运会圆满举办,各国所获奖牌如表所示,请编写程序将表格数据转换为如图所示的可视化图形。
import numpy as np
import matplotlib.pyplot as plt
countries = ['美国', '俄罗斯', '中国', '英国', '德国']
medal_data = {
'金牌数': [36, 23, 51, 19, 16],
'银牌数': [38, 21, 21, 13, 10],
'铜牌数': [36, 28, 28, 15, 15]
}
x = np.arange(len(countries))
bar_width = 0.2
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.bar(x - bar_width, medal_data['金牌数'], width=bar_width, align='center', label='金牌', color='gold')
plt.bar(x, medal_data['银牌数'], width=bar_width, align='center', label='银牌', color='silver')
plt.bar(x + bar_width, medal_data['铜牌数'], width=bar_width, align='center', label='铜牌', color='brown')
plt.xlabel('国家')
plt.ylabel('奖牌数')
plt.title('奥运奖牌榜')
plt.xticks(x, countries)
plt.legend()
for i, country in enumerate(countries):
for medal in medal_data:
medal_index = list(medal_data.keys()).index(medal)
plt.text(x[i] + (medal_data[medal][i] != 0) * bar_width * (medal_index - 1), medal_data[medal][i] + 1, str(medal_data[medal][i]), ha='center')
plt.show()