Python数据分析判断题整理
第二章:Python语言基础与环境 + 第三章:Pandas 数据结构与操作
1. 元组中的元素只能是同一数据类型 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** Python 的元组和列表都可以包含不同数据类型的元素,是异构容器。例如 `(1, "hello", 3.14)` 是合法的。
2. 可以用a={}创建空的集合 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 使用 `{}` 创建的是一个空的字典。要创建空集合,必须使用 `set()` 构造函数。
3. 在Python中,运行代码'5'+5,会生成字符串’55’( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 字符串和整数之间不能直接使用 `+` 运算符,会引发 `TypeError`。
4. 语句20==20.0返回结果是True ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `==` 运算符比较的是值。整数 `20` 和浮点数 `20.0` 的数值相等。
5. 可以将列表作为字典的键 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 字典的键必须是不可变(hashable)的对象。列表是可变的,因此不能作为键。
6. 所有写在“//”号之后的文本会自动被Python解释器忽略 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** Python 的单行注释符号是 `#`。`//` 是整除运算符。
7. 列表中的pop方法可以返回特定位置的元素但是remove不可以( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `.pop(index)` 会移除并返回指定索引的元素。`.remove(value)` 移除指定值,但返回 `None`。
8. 通过isinstance(a, (int, str))可以检测变量a的类型是否在int, str中 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 `isinstance` 函数的标准用法,其第二个参数可以是一个类型元组。
9. 列表、字典、Numpy数组都是可变(mutable)对象 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这三者都允许在创建后修改其内部的元素或内容。
10. tup=(1,[1,2,3],3); tup[1].append(4)不能执行( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 元组本身是不可变的,但其内部的可变元素(如列表)是可以被修改的。
11. '5'+'3'的结果是’8’( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 字符串使用 `+` 运算符会进行拼接,结果是字符串 `'53'`。
12. 对于对象a=[1,2,3]和b=[1,2,3],a is b和a==b输出的结果都为True ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `a == b` (值相等) 是 `True`,但 `a is b` (身份标识不同) 是 `False`,因为它们是两个独立的对象。
13. d={}; d[tuple([1, 2, 3])] = 5语句不能执行( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 元组是不可变的,可以作为字典的键,该语句合法。
14. 函数柯里化的过程中,如果传入的参数数量不足,剩下的参数将默认为空值传入( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 它会返回一个等待接收剩余参数的新函数。
15. 运行以下代码,4 > 3 > 2 > 1,将返回True( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** Python 支持链式比较,该表达式等价于 `(4 > 3) and (3 > 2) and (2 > 1)`。
16. 下列这句代码是对的:test_data = 1, ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 结尾的逗号会使 Python 将其解释为一个单元素元组 `(1,)`。
17. Python中不可以使用java中表示语句块的“{}”,以及分隔符“;” ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** Python 不使用 `{}` 表示语句块,但可以使用分号 `;` 在同一行分隔多个语句。
18. (4,None,'foo')+(6,0)+('bar')不能执行 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `('bar')` 只是一个带括号的字符串,不是元组。元组和字符串不能相加,会引发 `TypeError`。正确的单元素元组应写为 `('bar',)`。
19. 设a = ’python’,可以执行a[0]=‘P’ ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 字符串是不可变对象,不能通过索引赋值来修改内容。
20. None是NoneType类型的唯一实例 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 `None` 的正确定义。
21. 像Java语言一样,Python语句也是以分号结尾的 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** Python 语句以换行符作为默认的终止符。
22. 对于含有换行的多行字符串,可以使用三个单引号’’’或者三个双引号””” ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 Python 定义多行字符串的标准语法。
23. 表达式“[3] in [1, 2, 3, 4]”的值是True.( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `in` 运算符检查的是元素。列表 `[1, 2, 3, 4]` 包含整数 `3`,但不包含列表 `[3]`。
24. def choise(x,y,z=5): choise(5,z= 2,y = 3) 可以调用 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `5` 作为位置参数赋给了 `x`,`y=3` 和 `z=2` 作为关键字参数赋值。所有参数都得到了明确且无冲突的赋值。
25. num1=num2=num3=20 在内存中指向不同的变量地址( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 链式赋值使 `num1`, `num2`, `num3` 都指向内存中同一个存放整数 `20` 的对象。
26. 使用pop( )方法删除列表中某一元素后,该元素从栈顶被推出且无法再访问。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `pop()` 方法会返回被删除的那个元素,可以将其赋值给变量以备后续使用。
27. 在Python中可以使用 id 作为变量名 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `id` 是一个内置函数,但不是关键字。因此可以作为变量名,但这会覆盖内置函数,是不推荐的做法。
28. 列表的插入函数insert()指定的序号可以大于数组长度。 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 如果 `index` 大于列表长度,`insert()` 会将元素插入到列表的末尾,效果等同于 `append()`。
29. List中的remove()函数会移除列表中指定的所有的元素。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `.remove(value)` 只会移除列表中第一个匹配到的 `value`。
30. 用 sort 函数可以产生一个排好序的序列副本。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 列表的 `.sort()` **方法**是原地排序,返回 `None`。而内置的 `sorted()` **函数**才会产生一个排好序的副本。
31. tup1=(1,2,3,4,5);a , b , *rest = tup1;type(rest);结果为 tuple 。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 在解包赋值中,带星号的 `*rest` 会将所有剩余的元素打包成一个列表 (list)。
32. set([2,[2,3,4]])的输出结果是{2,[2,3,4]}。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 集合的元素必须是可哈希的。列表 `[2,3,4]` 是可变的,不能放入集合中,会引发 `TypeError`。
33. type((1))和type(())的输出都是tuple ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `type(())` 是 `tuple`,但 `(1)` 只是一个带括号的整数,`type((1))` 是 `int`。
34. 已经a=[1,2,3,4,5], b=[6,7,8,9],则a.append(b)的输出结果是[1,2,3,4,5,6,7,8,9] ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `.append(b)` 会将整个列表 `b` 作为一个单一元素添加到 `a` 的末尾,结果是 `[1,2,3,4,5, [6,7,8,9]]`。应使用 `.extend(b)` 或 `a + b` 来拼接。
第四章:NumPy 数组与操作
1. ndarray包含的每一个元素均为相同类型。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 NumPy 数组(`ndarray`)的核心特性之一。它是一个同构数据容器,所有元素必须是相同的数据类型(如 `int64`, `float64` 等),这使得 NumPy 能够进行高效的批量运算。(旧版专门测试过是可以异构,但新版已经只能同构。所以答案是T)
2. import numpy as np, arr=np.arange(10), arr.astype(float), print(arr),输出结果为[0 1 2 3 4 5 6 7 8 9]。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `arr.astype(float)` 方法会返回一个新的、数据类型为浮点数的数组副本,它并不会原地修改 `arr` 本身。因此,`print(arr)` 打印的仍然是原始的整数数组。
3. 嵌套序列能被转换为多维数组( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.array()` 函数可以将嵌套的列表或元组(如 `[[1,2],[3,4]]`)转换为多维 NumPy 数组。
4. NumPy中的random函数中的randn()可以产生N(0,1)的数( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.random.randn()` 函数用于生成服从标准正态分布(均值为0,方差为1,即 N(0,1))的随机数。
5. 使用np.unique函数可以对NumPy数组进行去重。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.unique(arr)` 会找出数组 `arr` 中的唯一元素,并返回一个已排序的新数组。
6. 两个大小相等数组之间的算术运算,都是“点对点”的运算。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 NumPy 的核心特性,也称为元素级 (element-wise) 运算。数组间的算术运算会作用于对应位置的元素。
7. 可以通过numpy中的astype方法显式地转换数组的数据类型。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `arr.astype(new_dtype)` 是转换 NumPy 数组数据类型的标准方法。
8. np.arange()是python内建函数的range的数组版( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.arange()` 的功能与 `range()` 类似,但它返回的是一个 NumPy 数组,而不是一个迭代器,并且它支持浮点数步长。
9. arr.mean(1)计算的是每一列的平均值,arr.sum(0)计算行轴向的累和( )
点击查看解析
**正确答案:** 错误 (False)
**解析:**
- `axis=1` 表示沿着行的方向进行计算,因此 `arr.mean(1)` 计算的是每一行的平均值。
- `axis=0` 表示沿着列的方向进行计算,因此 `arr.sum(0)` 计算的是每一列的和。
10. 数组的切片就是将原数组的数据复制,对切片的修改不会影响原数组( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** NumPy 数组的切片返回的是原始数组的视图 (view),而不是副本。对切片(视图)的修改会直接影响到原始数组。
11. 数组生成函数array将输入数据转化为ndarray,默认复制所有的输入数据.( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.array()` 函数默认会创建一个输入数据的副本,除非输入本身就是一个 `ndarray` 且 `copy=False`。
12. 运用arr.ndim可以查看数组arr的秩。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `.ndim` 属性返回数组的维度数,即秩 (rank)。
13. 同尺寸数组之间直接的比较会产生一个布尔值。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 数组间的比较是元素级的,会产生一个与原数组形状相同的布尔数组,而不是单个布尔值。
14. data=np.random.randn(2,3),则data.ndim的输出结果是3( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `np.random.randn(2, 3)` 创建的是一个 2 行 3 列的二维数组。因此,其维度数 `.ndim` 是 2。
15. NumPy中的zeros方法和empty方法本质是一样的,都是创建一个全0的数组 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `np.zeros()` 创建并初始化一个全为 0 的数组。`np.empty()` 只分配内存空间,不进行初始化,其内容是内存中残留的“垃圾值”,是不确定的。
16. np.sort方法对数组按位置进行排序。( )
点击查看解析
**正确答案:** 错误 (False)
**解析**: `np.sort()` 是一个函数,它返回一个排好序的数组副本,不改变原数组。对数组进行原地排序的是 `.sort()` **方法**。
17. 用NumPy数组对象的reshape方法变换维度时会改变原数组。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `.reshape()` 方法返回一个具有新形状的视图,如果可能的话。它不会改变原始数组的形状。
18. bool = np.array(...),则(bool>0).any()返回True。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 在数值比较中,`True` 被当作 1,`False` 被当作 0。`bool>0` 会产生一个布尔数组,其中原为 `True` 的位置现在也是 `True`。因为结果中至少有一个 `True`,所以 `.any()` 返回 `True`。
19. 使用布尔值索引选择数据时,生成的是数据的视图 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 布尔索引和花式索引(整数数组索引)总是返回数据的副本,而不是视图。
20. 多维Numpy数组的修改元素操作可使用tuple,例如arr2d[(0,0)]=0。 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 使用元组 (tuple) 来指定多维数组中元素的位置是 NumPy 的标准索引方式。`arr2d[(0,0)]`(通常简写为 `arr2d[0,0]`)会精确地选中第 0 行第 0 列的元素,并可以对其进行赋值修改。
21. 对一个array数组进行reshape操作,作用对象的数组形状会发生改变。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 此题与第17题类似。`.reshape()` 返回一个新形状的视图或副本,原始数组的形状不变。
22. 下面代码会报错。arr=[1,2,3];np.sqrt(arr,arr)( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.sqrt(arr, out=arr)` 的第二个参数是输出位置。但 `arr` 是一个 Python 列表,而不是 NumPy 数组。NumPy 的 ufunc (如 `np.sqrt`) 通常不能直接将结果写回 Python 列表。即便 `arr` 是 NumPy 数组,如果它是整数类型,将浮点数结果写回整数数组也会导致类型错误。
23. numpy的方法dot和*计算方式没有差别。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `*` 是元素级乘法。`np.dot()` 是矩阵乘法(或向量内积)。两者计算方式和结果完全不同。
24. numpy的mean()函数只能对一维数组使用( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `mean()` 函数可以对任意维度的数组使用,并且可以通过 `axis` 参数指定沿哪个轴计算均值。
25. 如果a.shape=(2,3,4),那么a.mean(1).shape=(2,3)( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `a.mean(1)` (或 `axis=1`) 会沿着第 1 轴进行聚合,该轴会被“压缩”掉。原形状 `(2,3,4)`,去掉第 1 轴后,结果形状应为 `(2,4)`。
26. 输入np.empty(10)的结果为:array([0., 0., ..., 0.]) ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `np.empty()` 只分配内存,不初始化。其内容是内存中的“垃圾值”,是不确定的,通常不是全0。
27. 随机数生成器中的随机数种子相同可以产生不同的随机数组。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 设置相同的随机数种子 (`np.random.seed(...)`) 会保证后续生成的随机数序列是完全相同、可复现的。
28. 对Numpy 数组切片的修改并会影响原数组。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 此题与第10题类似。NumPy 数组的切片是视图,修改切片就是修改原始数组的对应部分。
29. 一个数组对象的itemsize,返回的值是由数组的大小决定的( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `.itemsize` 返回的是数组中单个元素占用的字节数,它由数组的数据类型 (`dtype`) 决定,与数组的大小(元素总数 `.size`)无关。
30. 已知x=np.array([3,5,1,9,6,3]),那么表达式np.argmax(x)的值为3( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.argmax()` 返回数组中最大值的第一个出现位置的索引。数组中的最大值是 9,其索引为 3。
31. ar = np.arange(9).reshape(3,3);ar[:2,0] 会生成一维数组( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `ar[:2, 0]` 中,列索引是单个整数 `0`,这会导致降维。结果是选择了前两行的第 0 列元素,形成一个一维数组 `[0, 3]`。
32. x=np.array([[0,1,2,3,4],[,5,6,7,8]]);x.shape。输出结果是(2,5)( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 代码 `[,5,6,7,8]` 中,第一个逗号前缺少一个值,这是语法错误 (SyntaxError),代码无法运行。
33. arr=[4,-1,9,16];np.sqrt(arr);arr 以上代码输出的结果为array([2,nan,3,4]) ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `np.sqrt(arr)` 会返回一个新的计算结果数组,但不会修改原始的 Python 列表 `arr`。所以最后打印 `arr` 仍然是 `[4, -1, 9, 16]`。
34. 与列表不同,数组中要求所有元素的dtype是一样的,如果传入的参数类型和数组类型不一样,需要按照已有的类型进行转换。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是对 NumPy 数组同构性和类型转换的准确描述。例如,向一个整数数组的某个位置赋浮点数,该浮点数会被截断为整数。
35. np.zeros()生成的矩阵元素属性是Int ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `np.zeros()` 默认生成的元素类型是浮点数 (`float64`)。要生成整数,需要明确指定 `dtype`,如 `np.zeros(..., dtype=int)`。
第五章:Pandas 核心功能
1. pd.isnull(frame)与pd.notnull(frame)方法可以判断DataFrame对象frame中的元素是否缺失,返回布尔值DataFrame。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这两个函数(或等价的 `.isnull()` 和 `.notnull()` 方法)都会返回一个与原始 DataFrame 形状相同的布尔型 DataFrame,用于标识每个元素是否为缺失值。
2. 针对DataFrame在行上的标签索引iloc是左闭右开区间,loc是左闭右闭区间。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 这个叙述是错误的。`.iloc` 是基于整数位置的索引,它是“左闭右开”的。`.loc` 是基于标签的索引,它是“左闭右闭”的。题目中将 `iloc` 描述为“标签索引”是错误的。
3. 在DataFrame中,当A是有效的Python变量名时,frame[‘A’]与frame.A返回的结果是相同的( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 Pandas 中两种访问列的方式。字典式 `frame['A']` 总是有效,而属性式 `frame.A` 只有在列名是有效 Python 标识符时才有效。当两者都有效时,返回结果相同。
4. pandas中的Series数据结构可以认为是一个长度固定且有序的字典( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** Series 将一个值序列和一个索引序列对应起来,这在概念上与有序字典(从Python 3.7+开始,字典默认有序)非常相似,其中索引是键,值是值。
5. pandas.to_datetime(date).year可以实现从时间序列(data)中提取年份( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `pd.to_datetime()` 返回的是 `Timestamp` 或 `DatetimeIndex`。要从这些对象中提取年份,需要使用 `.dt` 访问器(对于 Series)或直接访问 `.year` 属性(对于单个 Timestamp)。正确的写法应为 `pd.to_datetime(data).year` (对于单个值) 或 `pd.to_datetime(data).dt.year` (对于Series)。
6. 设有s = pd.Series(np.arange(3)),则s.loc[:1],s.iloc[:2],s[:2]输出的结果不一样( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `s` 的索引是 `[0, 1, 2]`。
- `s.loc[:1]`:标签切片,左闭右闭,选择标签 0 和 1。
- `s.iloc[:2]`:位置切片,左闭右开,选择位置 0 和 1。
- `s[:2]`:标准的 Series 切片,当索引为整数时,行为与位置切片相同,选择位置 0 和 1。
7. 从DataFrame中选取的列是数据的视图,而不是拷贝。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 通常情况下,使用 `df['col_name']` 这种方式选择单列返回的是原始 DataFrame 的视图。对这个视图进行修改会影响原始 DataFrame,并可能触发 `SettingWithCopyWarning`。
8. df1 = ... 其中df1.iloc[2:1]=8 ( )
点击查看解析
**解析:** 此题缺失判断。但 `df1.iloc[2:1]` 是一个空的切片(起始位置在结束位置之后),对空切片赋值不会修改 DataFrame,也不会报错。
9. 包含Series的字典可以用于构造DataFrame( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是创建 DataFrame 的一种常见且有效的方式。字典的键会成为列名,Series 的值成为列数据,Pandas 会自动对齐 Series 的索引。
10. obj = pd.Series(...), obj.sort_values(),此操作会将obj中所有的缺失值都放到它的尾部。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `.sort_values()` 方法的 `na_position` 参数默认为 `'last'`,即缺失值 (`NaN`) 会被放在排序结果的末尾。
11. 如果嵌套字典被赋值给DataFrame,pandas会将字典的键作为列,内部字典的键作为行索引( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 `pd.DataFrame()` 处理嵌套字典的标准行为,例如 `pd.DataFrame({'col1': {'row1': 1}})`。
12. pd.DataFrame(np.arange(9).reshape((3,3))))可以建立3列3行的DataFrame。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `np.arange(9).reshape((3,3))` 创建一个 3x3 的 NumPy 数组,`pd.DataFrame()` 可以直接接受这个二维数组来创建一个 3x3 的 DataFrame。
13. 将Series赋值给DataFrame的一列时,Series的索引会按照DataFrame的索引重新排列,并在空缺的地方填充缺失值。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这是 Pandas 的核心特性之一:自动对齐索引。赋值时,Pandas 会根据 DataFrame 的行索引来匹配 Series 的索引,如果某个 DataFrame 索引在 Series 中找不到,对应位置就会被填充为 `NaN`。
14. 在pandas中,通过isnull和notnull函数检查缺失数据,返回的结果是一样的( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `isnull()` 和 `notnull()` 的功能正好相反。`isnull()` 在缺失值位置返回 `True`,而 `notnull()` 在非缺失值位置返回 `True`。
15. ser=pd.Series(np.arange(3.)),ser.loc[:1]和ser.iloc[:1]的结果是一样的( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `ser` 的索引是 `[0, 1, 2]`。
- `ser.loc[:1]`:标签切片,左闭右闭,选择标签 0 和 1。结果包含两个元素。
- `ser.iloc[:1]`:位置切片,左闭右开,只选择位置 0。结果包含一个元素。
16. ['c':'d']是无效的索引 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 对于 Pandas 的 Series 或 DataFrame,如果其索引是字符串标签,那么 `['c':'d']` 这种形式的标签切片是完全有效的。
17. 对DataFrame中选取的列进行修改不会映射到DataFrame中。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 选取的列通常是视图,对其进行修改会映射回原始的 DataFrame。
18. DataFrame的 values属性会把包含在DataFrame中的数据以NumPy数组的形式返回( )
点击查看解析
**正确答案:** 正确 (True)
**解析**:这是 `.values` 属性(在新版中推荐使用 `.to_numpy()`)的标准功能。
19. 对于索引值为[‘a’,’b’]的Series对象obj,可以使用obj[1]获取值 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 当 Series 的索引是非整数类型时,整数索引会被明确地解释为位置索引。`obj[1]` 会获取第二个元素。
20. 4 in pd.Series([4,7,-5,3])返回的结果是True。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `in` 运算符对于 Series 检查的是索引,而不是值。由于该 Series 的索引是 `[0, 1, 2, 3]`,不包含 `4`,所以返回 `False`。要检查值,应使用 `4 in series.values`。
21. obj=...;对于obj的切片,obj["b":"c"],其输出值为 b 1.0。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 标签切片 `obj["b":"c"]` 是“左闭右闭”的,会包含标签 `'b'` 和 `'c'` 的所有行。结果应为 `'b': 1.0, 'c': 2.0`。
22. 已知obj2 = ...,输入obj2['a':'f'],会正确执行。 ( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `obj2` 的索引 `['d', 'b', 'a', 'c']` 是无序的。对无序索引进行标签切片,Pandas 无法确定 `'a'` 和 `'f'` 之间的范围,会引发 `KeyError`。
23. states = ('California', ...)和states = ['California', ...]都可以执行的。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 第一条语句创建元组,第二条创建列表,都是合法的 Python 语法。
24. 从DataFrame中选取的列是数据的拷贝,而不是视图。( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 此题与第7题类似。选取的列通常是视图。
25. Series中的索引值可以重复;DataFrame每列内需是相同的值类型。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这两个都是 Pandas 数据结构的基本特性。
26. a1是一个Series,a2是一个DataFrame,他们都属于Pandas,但是a1.values和a2.values返回的数据类型不一样( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 两者的 `.values` 属性都返回一个 NumPy `ndarray` 对象。区别在于维度,`a1.values` 是一维的,`a2.values` 是二维的,但它们的类型都是 `numpy.ndarray`。
27. 对pandas对象进行切片时:按Label索引进行切片…( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 这个叙述准确地总结了 Pandas 切片的三条规则。
28. del在DataFrame中只能够删除列不能够删除行。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** Python 的 `del` 关键字与 Pandas 结合使用时,`del df['col']` 是删除列的有效语法。但没有 `del df[row_index]` 这种删除行的语法,删除行必须使用 `.drop()` 方法。
29. 已知有一个DataFrame对象,可以直接用切片索引它的行列( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `df[...]` 这种直接切片操作是针对行的。要同时索引行和列,必须使用 `.loc` 或 `.iloc` 索引器,如 `df.loc[row_slice, col_slice]`。
第六章:数据输入输出与接口
1. 用pandas读取文件时不指定列名时,会报错( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 不指定列名时,Pandas 的 `read_csv` 等函数会默认将文件的第一行作为列名。如果文件没有列名行,可以设置 `header=None`,Pandas 会自动生成整数列名。
2. pd.read_csv('examples/ex2.csv', header=0),header = 0表示取文件中的第一行作为列名。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `header` 参数指定用作列名的行号,索引从 0 开始。`header=0` 明确表示使用文件的第一行作为列名,这也是 `read_csv` 的默认行为。
3. 使用read_csv方法读取文件时,可以通过指定chunksize进行分块读入文件( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `chunksize` 参数用于处理大文件,它会返回一个 `TextFileReader` 对象,可以通过迭代该对象来逐块读取数据。
4. csv产生的数据都是字符串类型的,它不会做任何其它类型的转换( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `read_csv` 会自动进行类型推断,尝试将列转换为数值类型(如 `int64`, `float64`)或日期时间类型。
5. 使用json.loads方法可以将JSON字符串转化为python形式,使用json.dumps可以将python对象转化为JSON。( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `json.loads` (load string) 用于反序列化,`json.dumps` (dump string) 用于序列化。
6. DataFrame中的to_csv方法只能导出逗号分隔的文件( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** `to_csv` 方法可以通过 `sep` 参数指定任意分隔符,例如 `sep='\t'` 可以导出制表符分隔的文件。
7. JSON对象中的键可以是int形式( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 根据 JSON 规范,对象的键 (key) 必须是字符串。虽然 Python 字典的键可以是整数,但在序列化为标准 JSON 格式时,这些整数键会被转换为字符串。
8. 当要读入的文件没有列名时,可以设置关键字header=None( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `header=None` 明确告诉 Pandas 文件没有列名行,应将所有行都作为数据读取,并自动生成整数列名。
9. 读取的字段由多种不同数量的空格分开时,我们可以通过向sep传入正则表达式来进行读取( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** 当分隔符不固定时,可以使用正则表达式。例如,`sep='\s+'` 可以匹配一个或多个空格作为分隔符。
10. CSV文件在写入的时候data1=data.to_csv(...),其中sep参数用于制定分隔符( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `to_csv` 的 `sep` 参数用于指定输出文件中的字段分隔符。
11. 使用read_csv()函数必须从头开始逐行读取( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 可以通过 `skiprows` 参数跳过文件开头的任意行,或通过 `skipfooter` 跳过结尾的行。
12. 将pandas数据写入到Excel格式中必须直接调用ExcelWriter( )
点击查看解析
**正确答案:** 错误 (False)
**解析:** 最简单的方式是使用 DataFrame 的 `.to_excel()` 方法。只有当需要向同一个 Excel 文件的多个工作表中写入数据时,才需要显式地使用 `ExcelWriter`。
13. pandas中的函数read_html在默认的情况下会解析一个html页面中的所有标签,返回的结果是DataFrame对象的列表 ( )
点击查看解析
**正确答案:** 正确 (True)
**解析:** `pd.read_html()` 会尝试在 HTML 页面中找到所有 `
