趋近智
Microsoft Excel电子表格(旧版本为.xls,新版本为.xlsx)常用于存储表格数据,尤其是在商业环境中,因此非常普遍。Pandas提供了一个方便的函数pd.read_excel(),专门用于直接从这些文件读取数据到DataFrame。
最简单地,读取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参数 (parameter)指定要加载哪个工作表。
按工作表名称加载: 如果你知道工作表的名称(例如,“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通常是你需要的)。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•