使用 Pandas 实现 Excel 多表联合操作实战

🧾 项目背景

        在企业数据分析中,我们经常需要将多个 Excel 表格中的数据进行关联、合并与筛选
例如:

  • 将品牌信息表和销售金额表合并;
  • 根据城市信息表补充地区维度;
  • 对多张工作表进行统一清洗与输出。

本文将以一个完整的 Python 脚本为例,演示如何使用 pandas 对多个 Excel 文件进行:

  1. 数据读取
  2. 多表合并(left join)
  3. 类型转换与空值处理
  4. 条件筛选
  5. 结果写入新文件

📁 数据说明

        假设你有三个 Excel 文件:

1、测试版表3_1.xlsx(品牌信息表)

ID品牌
1A品牌
2B品牌
3C品牌

2、测试版表3_2.xlsx(交易金额表)

ID交易金额
1150
2

80

3200

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品牌交易金额省份
1A品牌150成都市
2B品牌80重庆市
3C品牌0昆明市

处理后的数据(筛选后)

ID品牌交易金额省份
1A品牌150成都市

📝 总结

        本文通过一个完整的案例,介绍了如何使用 pandas 对多个 Excel 文件进行:

  • 多表合并(merge / left join)
  • 缺失值填充(fillna)
  • 数据类型转换(astype)
  • 条件筛选(布尔索引)
  • 结果导出(to_excel)

这些操作是构建数据管道、实现自动化办公的重要基础技能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值