🧾 项目背景
在企业数据分析中,我们经常需要将多个 Excel 表格中的数据进行关联、合并与筛选。
例如:
- 将品牌信息表和销售金额表合并;
- 根据城市信息表补充地区维度;
- 对多张工作表进行统一清洗与输出。
本文将以一个完整的 Python 脚本为例,演示如何使用 pandas 对多个 Excel 文件进行:
- 数据读取
- 多表合并(left join)
- 类型转换与空值处理
- 条件筛选
- 结果写入新文件
📁 数据说明
假设你有三个 Excel 文件:
1、测试版表3_1.xlsx(品牌信息表)
ID | 品牌 |
1 | A品牌 |
2 | B品牌 |
3 | C品牌 |
2、测试版表3_2.xlsx(交易金额表)
ID | 交易金额 |
1 | 150 |
2 |
80 |
3 | 200 |
3、 测试版表3_3.xlsx(城市信息表)
ID | 城市 |
1 | 成都市 |
2 | 重庆市 |
3 | 昆明市 |
我们的目标是:
- 合并这三个表,补全缺失的“交易金额”和“城市”字段;
- 筛选出“交易金额 ≥ 100 且 城市 = 成都市”的记录;
- 将结果保存到新的 Excel 文件中。
🧪 脚本解析
1. 导入库并读取数据
import pandas as pd
# 读取三个Excel文件
brands = pd.read_excel('测试版表3_1.xlsx', sheet_name='Sheet1')
amount = pd.read_excel('测试版表3_2.xlsx', sheet_name='Sheet1')
city = pd.read_excel('测试版表3_3.xlsx', sheet_name='Sheet1')
每个表格分别代表不同的业务维度,后续通过 ID 字段进行连接。
2. 第一次合并:品牌 + 交易金额
# 使用左连接合并 brands 和 amount 表
table = brands.merge(amount, how='left', on='ID').fillna(0)
# 将交易金额列转为整数类型
table['交易金额'] = table['交易金额'].astype(int)
- how='left' 表示保留所有品牌信息,缺失金额用 0 补齐;
- astype(int) 避免因为空值导致数值列被识别为 float。
3. 第二次合并:加入城市信息
# 再次左连接 city 表
table2 = table.merge(city, how='left', on='ID').fillna(0)
# 将城市列转为字符串类型
table2['城市'] = table2['城市'].astype(str)
这样我们就可以得到一个包含品牌、交易金额、城市的完整数据集。
4. 应用筛选条件
# 筛选交易金额 >= 100 且 城市 == '成都市'
finally_brand = table2[(table2['交易金额'] >= 100) & (table2['城市'] == '成都市')]
可以根据实际需求灵活组合多个条件,实现精准筛选。
5. 写入 Excel 文件
# 写入合并后的完整数据
with pd.ExcelWriter('测试版表4.xlsx', mode='w', engine='openpyxl') as writer:
table2.to_excel(writer, sheet_name='Sheet1', index=False)
# 写入筛选后的数据
with pd.ExcelWriter('测试版表4.xlsx', mode='a', engine='openpyxl', if_sheet_exists='replace') as writer:
finally_brand.to_excel(writer, sheet_name='处理后的数据', index=False)
- 使用 mode='w' 创建新文件;
- 使用 mode='a' 添加第二个工作表;
- index=False 避免写入行索引。
✅ 示例输出
运行脚本后,你将在 测试版表4.xlsx 中看到两个工作表:
Sheet1(完整合并数据)
ID | 品牌 | 交易金额 | 省份 |
1 | A品牌 | 150 | 成都市 |
2 | B品牌 | 80 | 重庆市 |
3 | C品牌 | 0 | 昆明市 |
处理后的数据(筛选后)
ID | 品牌 | 交易金额 | 省份 |
1 | A品牌 | 150 | 成都市 |
📝 总结
本文通过一个完整的案例,介绍了如何使用 pandas 对多个 Excel 文件进行:
- 多表合并(merge / left join)
- 缺失值填充(fillna)
- 数据类型转换(astype)
- 条件筛选(布尔索引)
- 结果导出(to_excel)
这些操作是构建数据管道、实现自动化办公的重要基础技能。