python中pandas库的ExcelFile的使用
·
使用 pandas.ExcelFile 读取 Excel 文件
pandas.ExcelFile 是一个用于高效读取 Excel 文件的类,特别适合需要多次操作同一文件的情况。它支持 .xls 和 .xlsx 格式。
初始化 ExcelFile 对象
import pandas as pd
excel_file = pd.ExcelFile('path_to_file.xlsx')
查看 Excel 文件的工作表名称
使用 sheet_names 属性可以获取文件中所有工作表的名称列表。
sheet_names = excel_file.sheet_names
print(sheet_names) # 输出: ['Sheet1', 'Sheet2', ...]
读取特定工作表的数据
通过 parse() 方法读取指定工作表的数据为 DataFrame。可以指定工作表名称或索引。
# 通过名称读取
df1 = excel_file.parse('Sheet1')
# 通过索引读取
df2 = excel_file.parse(0) # 读取第一个工作表
指定读取参数
parse() 方法支持与 pd.read_excel() 相同的参数,例如跳过行、选择列等。
df = excel_file.parse(
'Sheet1',
skiprows=2, # 跳过前两行
usecols='A:C', # 只读取 A 到 C 列
na_values=['NA'], # 将 'NA' 识别为缺失值
)
跳过指定行则可以对skiprows进行修改
skiprows = lambda x: x!=0 and condition 1 :
skiprows的常见用法有以下几种:
传入整数 n:跳过前 n 行
例如skiprows=2 表示跳过前 2 行,从第 3 行开始读取数据。
传入列表 / 数组:跳过指定行号的行
行号从 0 开始计数,例如 skiprows=[0, 2, 4] 表示跳过第 1 行、第 3 行、第 5 行(索引为 0、2、4 的行)。
传入函数:通过函数判断是否跳过行
函数接收行号(从 0 开始)作为参数,返回 True 则跳过该行,False 则保留。
例如 skiprows=lambda x: x in [0, 2] 表示跳过第 1 行和第 3 行。
处理多工作表文件
对于包含多个工作表的文件,可以遍历所有工作表并处理数据。
for sheet_name in excel_file.sheet_names:
df = excel_file.parse(sheet_name)
print(f"Processing {sheet_name}:")
print(df.head())
关闭文件资源
虽然 ExcelFile 会在垃圾回收时自动关闭文件,但显式关闭可以及时释放资源。
excel_file.close()
使用上下文管理器
通过 with 语句管理文件资源,确保文件正确关闭。
with pd.ExcelFile('path_to_file.xlsx') as excel_file:
df = excel_file.parse('Sheet1')
性能优势
对于需要多次读取同一文件的情况,ExcelFile 只需加载一次文件,比多次调用 pd.read_excel() 更高效。
# 低效方式:多次读取同一文件
df1 = pd.read_excel('file.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('file.xlsx', sheet_name='Sheet2')
# 高效方式:使用 ExcelFile 只加载一次
excel_file = pd.ExcelFile('file.xlsx')
df1 = excel_file.parse('Sheet1')
df2 = excel_file.parse('Sheet2')
支持的文件格式
ExcelFile 支持以下文件格式:
.xls(Excel 2003 及更早版本).xlsx(Excel 2007 及更高版本).xlsm(启用宏的 Excel 文件).ods(OpenDocument 表格)
更多推荐

所有评论(0)