Pandas 中文手册

6.2 读取Excel文件(常用,重点)

Pandas读取Excel文件教程:从基础到高级实战

Pandas 中文手册

本章节详细讲解使用Pandas读取Excel文件的完整方法,包括依赖库安装、核心参数配置、多工作表读取、特定区域读取和常见错误解决方法,适合数据分析新手快速上手。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

读取Excel文件(常用,重点)

Excel文件是数据分析中常见的格式之一,Pandas提供了强大的读取功能,让数据处理变得简单高效。本章将全面介绍如何使用Pandas读取Excel文件,从基础到高级技巧,适合新手学习。

为什么学习读取Excel文件重要?

在现实世界的数据分析项目中,Excel文件常作为数据源,掌握Pandas读取方法能帮助你快速加载和处理数据,是数据分析的基础技能。

依赖库安装

在读取Excel文件前,需要安装支持库。Pandas本身不直接读取Excel,依赖于openpyxlxlrd库。

  • openpyxl:用于读取.xlsx文件(Excel 2007及以上版本)。
  • xlrd:用于读取.xls文件(旧版本Excel文件),但注意xlrd最新版已停止支持.xls,建议使用1.2.0版本或改用openpyxl处理旧文件。

安装命令(在终端或命令提示符中运行):

pip install openpyxl xlrd

如果遇到权限问题,可以添加--user参数:pip install openpyxl xlrd --user

基础读取:使用pd.read_excel

Pandas提供了pd.read_excel()函数来读取Excel文件。最基本用法是传入文件路径。

示例:

import pandas as pd

# 读取Excel文件,默认读取第一个工作表
df = pd.read_excel('data.xlsx')
print(df.head())  # 显示前几行数据
  • 文件路径:可以是绝对路径或相对路径。例如,如果文件在当前目录,直接写文件名;否则,使用完整路径如C:/users/data.xlsx

核心参数配置

pd.read_excel()有许多参数可以定制读取方式,以下是最常用和重要的参数。

1. sheet_name:指定工作表

默认读取第一个工作表(索引0),但可以通过sheet_name参数指定。

  • 可以传入工作表名称(字符串)或索引(整数)。
  • 示例:
    # 读取名为Sheet1的工作表
    

df1 = pd.read_excel('data.xlsx', sheet_name='Sheet1')

读取第二个工作表(索引1)

df2 = pd.read_excel('data.xlsx', sheet_name=1)


### 2. header:指定表头行
表头是Excel中的第一行,通常包含列名。`header`参数用于指定哪一行作为表头。
- 默认`header=0`,即第一行。
- 如果没有表头,可以设置`header=None`,这样Pandas会使用默认列名(0, 1, 2...)。
- 示例:
```python
# 使用第一行作为表头
df = pd.read_excel('data.xlsx', header=0)
# 没有表头的情况
df_no_header = pd.read_excel('data.xlsx', header=None)

3. index_col:指定索引列

索引列是DataFrame中的行标签。index_col参数用于指定哪一列作为索引。

  • 默认index_col=None,不指定索引。
  • 可以传入列索引(整数)或列名(字符串)。
  • 示例:
    # 将第一列作为索引
    

df = pd.read_excel('data.xlsx', index_col=0)

将名为ID的列作为索引

df = pd.read_excel('data.xlsx', index_col='ID')


### 4. usecols:指定读取的列
如果Excel文件有很多列,你可能只需要部分列。`usecols`参数可以指定读取哪些列。
- 可以是列索引列表、列名列表或范围。
- 示例:
```python
# 读取前3列(索引0, 1, 2)
df = pd.read_excel('data.xlsx', usecols=[0, 1, 2])
# 读取名为A、B的列
df = pd.read_excel('data.xlsx', usecols=['A', 'B'])
# 读取A到C列
df = pd.read_excel('data.xlsx', usecols='A:C')

读取多个工作表

通过sheet_name参数指定列表,可以同时读取多个工作表,返回一个字典,键是工作表名或索引,值是对应的DataFrame。

示例:

# 读取Sheet1和Sheet2
sheets_dict = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
# 访问具体工作表
df1 = sheets_dict['Sheet1']
df2 = sheets_dict['Sheet2']

或者读取所有工作表:

# 读取所有工作表
all_sheets = pd.read_excel('data.xlsx', sheet_name=None)

读取Excel中的特定区域

有时Excel文件包含多余信息,你可以使用skiprowsnrowsusecols来读取特定区域。

skiprows:跳过行

跳过文件开头的一些行。

  • 示例:跳过前2行(包括空行或标题行)。
    df = pd.read_excel('data.xlsx', skiprows=2)
    

nrows:限制读取行数

只读取指定数量的行,适合处理大型文件的部分数据。

  • 示例:只读取前100行。
    df = pd.read_excel('data.xlsx', nrows=100)
    

组合使用

可以同时使用这些参数来精确读取所需数据。 示例:跳过前2行,只读取3行和A到C列。

df = pd.read_excel('data.xlsx', skiprows=2, nrows=3, usecols='A:C')

读取Excel文件常见错误与解决方法

新手在使用pd.read_excel()时可能遇到一些常见问题,这里列出并提供解决方案。

  1. 错误:ModuleNotFoundError: No module named 'openpyxl' 或 'xlrd'

    • 原因:未安装依赖库。
    • 解决:运行pip install openpyxl xlrd安装库。
  2. 错误:FileNotFoundError: [Errno 2] No such file or directory

    • 原因:文件路径错误或文件不存在。
    • 解决:检查文件路径是否正确,确保使用正确扩展名(如.xlsx或.xls)。
  3. 错误:ValueError: 工作表名称不存在

    • 原因sheet_name参数指定的工作表名错误。
    • 解决:检查Excel文件中的实际工作表名,或用索引指定。
  4. 读取旧.xls文件出错

    • 原因:xlrd库最新版(>=2.0)已不支持.xls格式。
    • 解决:安装特定版本:pip install xlrd==1.2.0,或使用openpyxl转换文件为.xlsx格式。
  5. 性能问题:读取大文件慢

    • 原因:Excel文件过大或包含复杂格式。
    • 解决:使用usecols只读取所需列,或尝试分块读取(Pandas有分块功能)。
  6. 数据格式错误:例如数字读成字符串

    • 原因:Excel中的数据类型混合。
    • 解决:读取后使用Pandas函数(如pd.to_numeric())转换数据类型。

完整示例:综合应用

下面是一个完整示例,展示如何读取Excel文件的多个方面。

import pandas as pd

# 假设有一个Excel文件data.xlsx,包含两个工作表:Sales和Inventory
# 读取Sales工作表的A到D列,跳过前1行,使用第一行作为表头,将ID列作为索引
df_sales = pd.read_excel('data.xlsx',
                         sheet_name='Sales',
                         usecols='A:D',
                         skiprows=1,
                         header=0,
                         index_col='ID')

# 读取Inventory工作表的特定区域:从第3行开始,只读5行和前3列
df_inventory = pd.read_excel('data.xlsx',
                            sheet_name='Inventory',
                            skiprows=2,
                            nrows=5,
                            usecols=[0, 1, 2],
                            header=None)  # 没有表头

print("Sales数据:")
print(df_sales.head())
print("\nInventory数据:")
print(df_inventory.head())

总结

本章学习了使用Pandas读取Excel文件的核心方法:从基础读取到高级配置。关键点包括:

  • 安装依赖库openpyxlxlrd
  • 使用pd.read_excel()函数,并熟练配置参数如sheet_nameheaderindex_colusecols
  • 读取多个工作表或特定区域,通过skiprowsnrows等优化读取。
  • 识别和解决常见错误,如依赖库问题或文件路径错误。

作为新手,建议多练习这些示例,逐步掌握,以便在实际项目中高效处理Excel数据。如有疑问,可参考Pandas官方文档或在线社区寻求帮助。

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包