to_csv() 和 read_csv() B. to_excel() 和 read_excel() C. merge() 和 concat() D. groupby() 和 agg() 答案:B 解析: 语料明确:to_excel() 和 read_excel() 函数实现 Excel 文件的存取。A 是上一节 CSV 的接口;C、D 分别属于合并连接与分组聚合。to_excel() 且不指定 sheet_name 时,默认工作表名称是? A. 学院 B. Sheet1 C. Sheet D. workbook 答案:B 解析: 函数 to_excel() 保存的默认工作表名称是 Sheet1。学院 是课程示例用 sheet_name 指定后的表名,不是默认值。to_excel() 是数据框的成员,要通过数据框对象调用。 答案:√ 解析: 语料:to_excel() 是数据框的成员,要通过数据框对象调用,例如 df.to_excel('renshu.xlsx', index=True)。read_excel() 是数据框的成员,必须写成 df.read_excel(...)。 答案:× 解析: read_excel() 是 pandas 的成员,要通过 pandas 调用,正确写法是 pd.read_excel(...),不能对数据框对象调用。to_excel() 写出 Excel,下列说法正确的有: A. index=True 指定需要保存索引 B. index=False 表示不保存索引 C. 可用 sheet_name 指定工作表名称 D. 一次直接调用 to_excel() 就能在同一工作簿中写入多个工作表 答案:ABC 解析: A、B、C 均来自语料。直接 to_excel() 保存的工作簿中只有一个工作表;要在一个工作簿中保存多个工作表,必须利用 ExcelWriter,故 D 错误。renshu.xlsx 中工作表的名称是?from pandas import DataFrame
data = [[800, 750, 500], [700, 800, 600], [680, 720, 580]]
col = ['会计', '保险', '外语']
ind = ['2022', '2023', '2024']
df = DataFrame(data, columns=col, index=ind)
df.to_excel('renshu.xlsx', sheet_name='学院', index=True)
A. Sheet1 B. renshu C. 学院 D. 会计 答案:C 解析: 通过 sheet_name='学院' 指定工作表名称。若不设置该参数,默认才是 Sheet1。renshu 是文件名,会计 是列标签。
pd.read_excel() 的 sheet_name 参数,下列说法正确的是? A. 必须设置,否则无法读取 B. 用于指定工作表名称;读取工作簿的第一个工作表时也可以不设置 C. 作用与 index_col 完全相同 D. 只能取默认值 Sheet1,不能改为中文表名 答案:B 解析: 语料:参数 sheet_name 用于指定工作表名称,如果读取工作簿的第一个工作表,也可以不设置该参数。课程示例还用过中文表名「学院」。index_col 用于指定哪一列作为行索引,与选表无关。df1、df2 写入同一工作簿 workbook.xlsx 的不同工作表,下列做法正确的有:from pandas import DataFrame, ExcelWriter
df1 = DataFrame({'学号': ['201', '202'], '语文': [91, 82]})
df2 = DataFrame({'学号': ['203'], '语文': [93]})
with ExcelWriter('workbook.xlsx') as writer:
df1.to_excel(writer, sheet_name='表1')
df2.to_excel(writer, sheet_name='表2')
A. 必须使用 pandas 的 ExcelWriter 对象 B. 在 with ExcelWriter(...) as writer 中分别调用 to_excel(writer, sheet_name=...) C. 两个工作表名称可以分别指定为 '表1' 和 '表2' D. 连续两次 df1.to_excel('workbook.xlsx') 与 df2.to_excel('workbook.xlsx') 即可追加两个工作表 答案:ABC 解析: 语料给出了 ExcelWriter 写法,用于把 df1、df2 写入同一工作簿的「表1」「表2」。直接两次 to_excel(文件名) 会覆盖整个工作簿,不能追加工作表,故 D 错误。
index_col;否则不设置该参数。 答案:√ 解析: 语料对 read_excel() 的说明:如果工作表包含索引,则设置参数 index_col,否则不设置该参数。课程对应示例为 index_col=0。df2.loc['2023', '保险'] 分别是?import pandas as pd
from pandas import DataFrame
data = [[800, 750, 500], [700, 800, 600], [680, 720, 580]]
col = ['会计', '保险', '外语']
ind = ['2022', '2023', '2024']
df = DataFrame(data, columns=col, index=ind)
df.to_excel('renshu.xlsx', sheet_name='学院', index=True)
df2 = pd.read_excel('renshu.xlsx', sheet_name='学院', index_col=0)
df2.index = df2.index.astype(str) # 读回时年份会被推断为整数,转回字符串再按标签访问
print(list(df2.index))
print(df2.loc['2023', '保险'])
A. ['2022', '2023', '2024'] 和 800 B. [0, 1, 2] 和 800 C. ['2022', '2023', '2024'] 和 750 D. ['会计', '保险', '外语'] 和 800 答案:A 解析: 写出时 index=True 保存了行标签 2022/2023/2024;读入时 index_col=0 把第一列还原为索引。2023 年保险人数是二维列表第二行第二列,值为 800。750 是 2022 年保险人数;若不设 index_col,行标签会变成默认整数 0、1、2。
to_excel() 不能得到多工作表工作簿,正确做法是什么? 答案: (1)通过数据框调用 to_excel(),例如 df.to_excel('renshu.xlsx', sheet_name='学院', index=True):文件名为 renshu.xlsx,index=True 保存索引,sheet_name 指定工作表名为「学院」;不保存索引则 index=False;省略 sheet_name 时默认表名为 Sheet1。 (2)直接 to_excel() 保存的工作簿中只有一个工作表,再次对同一文件调用会覆盖而不是追加。要在一个工作簿中保存多个工作表,应使用 ExcelWriter:from pandas import ExcelWriter,在 with ExcelWriter('workbook.xlsx') as writer: 中分别 df1.to_excel(writer, sheet_name='表1')、df2.to_excel(writer, sheet_name='表2')。 解析: 评分要点:① 能写出 to_excel() 的文件名、index、sheet_name 三个要点及默认表名 Sheet1;② 能指出单次 to_excel() 只有一张表、多次会覆盖;③ 能写出 ExcelWriter 与两个 sheet_name 的用法。漏掉默认表名或把 read_excel 当成写出接口可酌情扣分。sheet_name='学院' 和 index_col=0,若改成读 Sheet1 或不设 index_col 会怎样?(3)若还要把另一个数据框 df_b 写进同一个 renshu.xlsx 的「表2」,应改用什么对象?import pandas as pd
from pandas import DataFrame
data = [[800, 750, 500], [700, 800, 600], [680, 720, 580]]
col = ['会计', '保险', '外语']
ind = ['2022', '2023', '2024']
df = DataFrame(data, columns=col, index=ind)
df.to_excel('renshu.xlsx', sheet_name='学院', index=True)
df2 = pd.read_excel('renshu.xlsx', sheet_name='学院', index_col=0)
df2.index = df2.index.astype(str) # 读回时年份会被推断为整数,转回字符串(即原来的行标签)
print(df2)
答案: (1)工作表名为「学院」(不是默认的 Sheet1);index=True 已保存行标签 2022、2023、2024。 (2)sheet_name='学院' 才能选中刚才写出的那张表,写成 'Sheet1' 会因工作簿中没有该表而出错。index_col=0 把保存下来的第一列还原为行索引;不设置则行标签会变成 0、1、2,原来的年份变成普通列,后续按 '2023' 做标签访问会失败。 (3)应改用 ExcelWriter,在同一个 writer 上分别 df.to_excel(writer, sheet_name='学院') 和 df_b.to_excel(writer, sheet_name='表2'),不能再对 renshu.xlsx 直接调用一次 to_excel(),否则会覆盖已有工作簿。 解析: 评分要点:① 表名「学院」且保存了索引;② 能解释错表名读不到、不设 index_col 会把索引列当普通列;③ 多表必须用 ExcelWriter。只背参数名、说不清覆盖后果可酌情扣分。
对应文件:
知识库/第4章 pandas数据分析库/4.5.2-读写Excel文件.md问答库/第4章 pandas数据分析库/4.5.2-读写Excel文件.md