fillna() B. astype() C. dropna() D. duplicated() 答案:B 解析: 语料明确:通常采用 astype() 方法,可以将序列、数据框指定列或者数据框对象转换为指定的数据类型。A、C 属于缺失值处理,D 属于重复值检测。astype() 可以将序列、数据框的指定列或者整个数据框对象转换为指定的数据类型。 答案:√ 解析: 课程说明:astype() 可将序列、数据框指定列或数据框对象转为指定类型。整表转换与单列转换都是合法用法。df['北方通信'].astype('float32') 后,原数据框中「北方通信」列会立刻变成 float32。 答案:× 解析: 只转换一列时生成一个新的序列对象,不会改写原数据框。要写入原始对象,必须赋值:df['北方通信'] = df['北方通信'].astype('float32')。astype(),下列说法正确的有: A. 可以对整个数据框调用,把所有列转成目标类型 B. 可以对数据框的一列调用,生成一个新的序列对象 C. 默认会原地修改原始数据框 D. 要把单列转换结果写回原对象,需要赋值 答案:ABD 解析: 课程给出整表 df.astype('float32') 与单列 df['北方通信'].astype('float32') 两种用法,并强调「以下命令可以将新生成的对象写入原始对象」。astype() 返回新对象,默认不原地修改,故 C 错误。df2 各列的 dtype 是?import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
df2 = df.astype('float32')
print(df2.dtypes)
A. 三列都是 int64 B. 三列都是 float32 C. 只有「北方通信」是 float32,其余为 int64 D. 三列都是 float64 答案:B 解析: df.astype('float32') 将数据框的所有列都转换成目标数据类型。课程示例转换后各列显示为 163.0、113.0 等形式,dtype 为 float32。
dtype 分别是?import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
s = df['北方通信'].astype('float32')
print(s.dtype)
print(df['北方通信'].dtype)
A. float32 与 float32 B. int64 与 int64 C. float32 与 int64 D. float64 与 float32 答案:C 解析: 单列 astype('float32') 生成新序列,s.dtype 为 float32(课程输出含 Name: 北方通信, dtype: float32)。未赋值回 df,原列仍为整数类型(如 int64)。
float32 并写进原数据框,下列写法正确的有:import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
A. df['北方通信'] = df['北方通信'].astype('float32') B. df['北方通信'].astype('float32') C. df.astype('float32')(不赋值)就能改掉原 df 的这一列 D. 赋值后可用 df['北方通信'].dtype 确认已是 float32 答案:AD 解析: 语料给出的写回命令正是 A。B、C 只产生新对象,原 df 不变。写回后该列 dtype 为 float32,可用 D 检查。
df.astype('float32') 会把原数据框的所有列都改成 float32,因此不必再赋值。 答案:× 解析: 整表 astype() 同样返回新数据框。课程写法是直接展示 df.astype('float32') 的结果,并未说明它会原地修改。不赋值则原对象类型不变;要保留转换结果应写成 df = df.astype('float32')。dtype 依次最接近哪一项?import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
df['北方通信'] = df['北方通信'].astype('float32')
print(df.dtypes)
A. float32、float32、float32 B. int64、float32、int64 C. float32、int64、float32 D. int64、int64、int64 答案:B 解析: 只对「北方通信」赋值转换,因此该列为 float32,美好集团、广东科技仍为原来的整数类型(如 int64)。A 是整表 astype 的结果;D 是完全未转换。
float32 并保留结果;(2)只把「北方通信」转为 float32 并写回原对象。说明两段代码各影响哪些列。 答案:import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
# (1)整表转换,三列都变为 float32
df_all = df.astype('float32')
# (2)单列转换并写回,只有「北方通信」变为 float32
df['北方通信'] = df['北方通信'].astype('float32')
(1)影响美好集团、北方通信、广东科技全部列。(2)只影响「北方通信」,其余两列仍为整数类型。 解析: 评分要点:① 整表用 df.astype('float32') 且用变量接收;② 单列必须赋值写回;③ 能说明整表改所有列、单列只改一列。漏掉赋值或把两种范围写反应扣分。
print(s) 中「北方通信」四个值及 dtype 是什么?(2)两行 print 中 df['北方通信'].dtype 是否相同?为什么?(3)若要把整张表都变成 float32,应如何修改?import numpy as np
from pandas import DataFrame
a = np.array([[163, 113, 132],
[175, 129, 119],
[193, 127, 125],
[189, 126, 110]])
df = DataFrame(a, index=['一月', '二月', '三月', '四月'],
columns=['美好集团', '北方通信', '广东科技'])
s = df['北方通信'].astype('float32')
print(s)
print(df['北方通信'].dtype)
df['北方通信'] = s
print(df['北方通信'].dtype)
答案: (1)s 为一月至四月:113.0、129.0、127.0、126.0,Name: 北方通信, dtype: float32。 (2)不相同。第一处仍是原列的整数类型(如 int64),因为 astype() 只生成新序列 s,尚未写回;第二处在 df['北方通信'] = s 之后,已是 float32。 (3)应对整个数据框调用并赋值,例如 df = df.astype('float32'),这样三列都会变成 float32,而不是只改「北方通信」。 解析: 评分要点:① 四个浮点值与 dtype: float32 与课程输出一致;② 能区分「生成新序列」与「写入原始对象」;③ 整表转换要用 df.astype('float32') 并接收返回值。只背 API 名称、说不清赋值前后差异可酌情扣分。