Python 数据导入工具 Pandas:高效读取 Excel 文件的完整指南
工具概述
Pandas 是 Python 生态中功能强大的数据处理库,提供简单易用的 API 实现 Excel 文件 (.xls 和.xlsx) 的高效读取与数据转换,支持复杂数据清洗和分析操作,是数据科学家和分析师处理结构化数据的核心工具。
功能特性解析
- 多格式支持:同时兼容.xls 和.xlsx 格式文件,无需额外安装格式驱动
- 自动类型推断:智能识别数值、日期、文本等数据类型,减少手动转换工作
介绍使用 Python Pandas 库读取 Excel 文件的方法,涵盖环境配置、基础读取、工作表选择、数据范围控制、类型处理及缺失值处理。通过实战案例展示销售数据汇总、多文件合并及复杂数据类型处理技巧,并提供常见错误解决方案与工具对比,帮助开发者高效完成结构化数据清洗与分析任务。
Pandas 是 Python 生态中功能强大的数据处理库,提供简单易用的 API 实现 Excel 文件 (.xls 和.xlsx) 的高效读取与数据转换,支持复杂数据清洗和分析操作,是数据科学家和分析师处理结构化数据的核心工具。
pip install pandas openpyxl xlrd
# 创建虚拟环境
python -m venv pandas-env
# 激活环境(Windows)
pandas-env\Scripts\activate
# 激活环境(Mac/Linux)
source pandas-env/bin/activate
# 安装依赖
pip install pandas openpyxl xlrd
import pandas as pd
print(f"Pandas 版本:{pd.__version__}")
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('data.xlsx')
# 查看数据基本信息
print(df.info())
# 显示前 5 行数据
print(df.head())
# 按名称选择工作表
df = pd.read_excel('data.xlsx', sheet_name='销售数据')
# 按索引选择工作表(从 0 开始)
df = pd.read_excel('data.xlsx', sheet_name=1)
# 读取多个工作表
dfs = pd.read_excel('data.xlsx', sheet_name=['表 1', '表 2'])
# 指定数据范围
df = pd.read_excel('data.xlsx', usecols='A:C', nrows=100)
# 使用行号范围
df = pd.read_excel('data.xlsx', skiprows=2, nrows=50)
# 自定义表头行
df = pd.read_excel('data.xlsx', header=2)
# 手动指定列数据类型
df = pd.read_excel('data.xlsx', dtype={ 'ID': str, '销售额': float, '日期': 'datetime64[ns]' })
# 处理日期格式
df = pd.read_excel('data.xlsx', parse_dates=['订单日期'])
# 指定缺失值标识
df = pd.read_excel('data.xlsx', na_values=['NA', '缺失', ''])
# 填充缺失值
df.fillna(method='ffill', inplace=True)
import pandas as pd
# 读取多个工作表数据
dfs = pd.read_excel('销售数据.xlsx', sheet_name=None)
# 合并所有工作表数据
all_data = pd.concat(dfs.values(), ignore_index=True)
# 数据清洗
all_data['销售日期'] = pd.to_datetime(all_data['销售日期'])
all_data['月份'] = all_data['销售日期'].dt.to_period('M')
# 月度销售汇总
monthly_sales = all_data.groupby('月份')['销售额'].sum()
print(monthly_sales)
import pandas as pd
import glob
# 获取所有 Excel 文件
file_paths = glob.glob('数据文件夹/*.xlsx')
# 批量读取并合并
dfs = []
for path in file_paths:
df = pd.read_excel(path)
df['来源文件'] = path.split('/')[-1] # 添加来源标识
dfs.append(df)
combined_df = pd.concat(dfs, ignore_index=True)
combined_df.to_excel('合并结果.xlsx', index=False)
import pandas as pd
# 读取包含多种数据类型的 Excel
df = pd.read_excel('复杂数据.xlsx', parse_dates=['出生日期'], dtype={'工号': str, '部门': 'category'}, na_values=['N/A', '未知'])
# 数据转换
df['年龄'] = df['出生日期'].apply(lambda x: (pd.Timestamp.now() - x).days // 365)
df['入职年份'] = df['入职日期'].dt.year
# 按部门统计平均年龄
dept_age = df.groupby('部门')['年龄'].mean()
print(dept_age)
错误提示:PermissionError: [Errno 13] Permission denied
解决方案:
错误提示:ValueError: could not convert string to float
解决方案:
# 指定列数据类型
df = pd.read_excel('data.xlsx', dtype={'金额': str})
# 清洗数据后转换
df['金额'] = df['金额'].str.replace(',', '').astype(float)
解决方案:
# 分块读取大型文件
chunk_iter = pd.read_excel('large_file.xlsx', chunksize=10000)
for chunk in chunk_iter:
process_chunk(chunk) # 处理每个数据块
解决方案:
# 指定日期列和格式
df = pd.read_excel('data.xlsx', parse_dates=['日期列'], date_parser=lambda x: pd.to_datetime(x, format='%Y年%m月%d日'))
| 功能特性 | Pandas | openpyxl | xlrd | xlwt |
|---|---|---|---|---|
| 读取.xlsx | ✅ | ✅ | ❌ | ❌ |
| 读取.xls | ✅ | ❌ | ✅ | ❌ |
| 写入 Excel | ✅ | ✅ | ❌ | ✅ |
| 数据处理能力 | 强大 | 基础 | 基础 | 基础 |
| 内存占用 | 中 | 低 | 低 | 低 |
| 速度 | 快 | 中 | 快 | 中 |
| 易用性 | 高 | 中 | 中 | 中 |
| 依赖 | openpyxl/xlrd | 无 | 无 | 无 |
关键优势:Pandas 提供一站式数据解决方案,从读取、清洗到分析可视化,而其他库通常只专注于 Excel 文件的读写功能。
掌握 Pandas 的 Excel 数据导入功能,将极大提升你的数据处理效率,无论是日常数据分析还是大型数据项目,Pandas 都能成为你可靠的助手,帮助你轻松应对各种数据挑战。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online