Microsoft Excel电子表格(旧版本为.xls,新版本为.xlsx)常用于存储表格数据,尤其是在商业环境中,因此非常普遍。Pandas提供了一个方便的函数pd.read_excel(),专门用于直接从这些文件读取数据到DataFrame。Excel文件基本读取最简单地,读取Excel文件与读取CSV文件非常相似。你只需提供文件路径:import pandas as pd # 假设 'data.xlsx' 在同一目录下 try: df_excel = pd.read_excel('data.xlsx') print("Excel文件加载成功:") print(df_excel.head()) except FileNotFoundError: print("错误:未找到data.xlsx。请确保文件存在。") # 如果需要,可添加其他可能的异常,例如权限错误默认情况下,pd.read_excel()会读取Excel工作簿中的第一个工作表。它还假定该工作表的第一行包含列标题。处理多个工作表Excel工作簿通常包含多个工作表,每个工作表可能存储不同的表格或相关信息。pd.read_excel()函数允许你使用sheet_name参数指定要加载哪个工作表。按工作表名称加载: 如果你知道工作表的名称(例如,“Sales Data”,“Inventory”),你可以将其作为字符串提供:# 加载名为 'Sales Data' 的工作表 sales_df = pd.read_excel('multi_sheet_data.xlsx', sheet_name='Sales Data') print("\n已加载 'Sales Data' 工作表:") print(sales_df.head())按工作表索引加载: 工作表也可以按其位置(索引)引用,第一个工作表从0开始,第二个从1开始,依此类推。# 加载第二个工作表(索引1) inventory_df = pd.read_excel('multi_sheet_data.xlsx', sheet_name=1) print("\n已加载第二个工作表(索引1):") print(inventory_df.head())加载所有工作表: 要将所有工作表加载到一个字典中,其中键是工作表名称,值是DataFrames,请设置sheet_name=None:all_sheets = pd.read_excel('multi_sheet_data.xlsx', sheet_name=None) print("\n已加载所有工作表:") for sheet_name, df_sheet in all_sheets.items(): print(f"\n--- 工作表:{sheet_name} ---") print(df_sheet.head())这会返回一个字典,当你在同一工作簿中需要处理来自多个工作表的数据时,这会很有用。引擎要求读取Excel文件需要额外的Python库来处理文件格式本身。Pandas为此使用不同的“引擎”。对于较新的.xlsx文件(Excel 2007+),通常使用openpyxl库。对于较旧的.xls文件(Excel 97-2003),传统上使用xlrd库,尽管出于安全原因,其在最近版本中已移除对.xlsx的支持。如果你尝试读取Excel文件但未安装所需的引擎,Pandas通常会给出一条提示你安装的信息性错误消息。你通常可以使用pip安装所需的引擎:# 对于 .xlsx 文件 pip install openpyxl # 如果你需要处理旧的 .xls 文件(如果需要,请安装特定版本) pip install xlrd如果你打算处理现代Excel文件,通常建议安装openpyxl。其他常用参数与pd.read_csv()类似,pd.read_excel()提供多个参数来调整数据加载方式:header=: 指定用作列名称的行号(0索引)。默认为0。index_col=: 指定用作DataFrame索引的列(按名称或0索引位置)。usecols=: 允许你指定要读取的列,可以通过名称或位置。这可以在你只需要部分数据时节省内存和时间。skiprows=: 跳过工作表开头指定数量的行。nrows=: 仅读取工作表中指定数量的行。# 示例:从“Inventory”工作表读取指定列, # 并使用“ProductID”列作为索引 inventory_subset = pd.read_excel( 'multi_sheet_data.xlsx', sheet_name='Inventory', usecols=['ProductID', 'ProductName', 'Quantity'], # 仅读取这些列 index_col='ProductID' # 将 ProductID 设置为索引 ) print("\n已加载“Inventory”工作表的子集,并以 ProductID 为索引:") print(inventory_subset.head())掌握pd.read_excel()对于处理存储在电子表格中数据的工作流程来说是必不可少的。它在处理不同工作表和自定义导入过程方面的灵活性,使其成为Pandas中数据获取的一个有价值的工具。请记住,在开始读取Excel文件之前,要安装必要的引擎(openpyxl通常是你需要的)。