4.5.2-读写Excel文件.md

4.5.2 读写Excel文件

pandas 通过 to_excel() 和 read_excel() 实现 Excel 文件的存取。to_excel() 是数据框的成员,必须通过数据框对象调用;read_excel() 是 pandas 的成员,要通过 pandas 调用(如 pd.read_excel())。这与上一节 CSV 的 to_csv()/read_csv() 分工相同。课程沿用招生人数示例:二维列表 data = [[800, 750, 500], [700, 800, 600], [680, 720, 580]],列标签为会计、保险、外语,行标签为 2022、2023、2024,先构成数据框再写入 Excel。

写出时调用 df.to_excel('renshu.xlsx', index=True)。参数 index=True 指定需要保存索引(行标签会出现在工作表最左列);不需要保存索引则设 index=False。函数 to_excel() 保存的默认工作表名称是 Sheet1,可以通过 sheet_name 指定工作表名称,例如 df.to_excel('renshu.xlsx', sheet_name='学院', index=True),工作表名变为「学院」。通过函数 to_excel() 保存的 excel 工作簿中只有一个工作表。如果要在一个工作簿中保存多个工作表,则要利用 pandas 的 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'),即可把两个数据框对象 df1 和 df2 写入同一工作簿 workbook.xlsx,工作表名分别为「表1」和「表2」。

读入时用 pd.read_excel()。参数 sheet_name 用于指定工作表名称;如果读取工作簿的第一个工作表,也可以不设置该参数。如果工作表包含索引,则设置参数 index_col,否则不设置该参数。对应写出「学院」表且保存了索引的读法是:df = pd.read_excel('renshu.xlsx', sheet_name='学院', index_col=0)。

易错点:to_excel() 必须用数据框调用,read_excel() 必须用 pd 调用,二者不能对调;默认表名是 Sheet1 而不是「学院」,读入时写错 sheet_name 会找不到工作表;对同一文件多次直接 to_excel() 会覆盖整个工作簿,并不能追加工作表,多表必须走 ExcelWriter;写出时 index=True 则读入应对齐设置 index_col=0,否则行标签会被当成普通列。读写 .xlsx 通常还需安装 openpyxl 引擎。

关键要点

下载此文件