Python两个Excel多Sheet数据对比

开发 前端
在数据处理与分析中,经常需要比较来自不同来源的数据集,特别是在处理涉及多个Excel工作簿和工作表的场景时。

在数据处理与分析中,经常需要比较来自不同来源的数据集,特别是在处理涉及多个Excel工作簿和工作表的场景时。Python的Pandas库提供了强大的工具,可以帮助我们高效地完成这一任务。下面,我们将一步步引导你如何使用Python对比两个Excel文件中多个Sheet的数据。

第一步:安装必要的库

确保你的Python环境中已安装pandas和openpyxl。如果没有安装,可以通过以下命令安装:

pip install pandas openpyxl

第二步:读取Excel文件中的多个Sheet

使用pandas.ExcelFile或pandas.read_excel直接读取多个Sheet的数据。

import pandas as pd
# 读取第一个Excel文件的所有Sheet
xlsx1 = pd.ExcelFile('file1.xlsx')
sheets1 = {sheet_name: xlsx1.parse(sheet_name) for sheet_name in xlsx1.sheet_names}
# 读取第二个Excel文件的所有Sheet
xlsx2 = pd.ExcelFile('file2.xlsx')
sheets2 = {sheet_name: xlsx2.parse(sheet_name) for sheet_name in xlsx2.sheet_names}

第三步:对比数据

对比两个Excel文件中相同名称的Sheet。我们可以逐个Sheet进行对比,寻找不一致的数据行。


# 创建一个空的字典来存储对比结果
comparison_results = {}
for sheet_name in sheets1.keys():
    if sheet_name in sheets2:
        # 如果两个文件都有相同的Sheet,则进行对比
        df1 = sheets1[sheet_name]
        df2 = sheets2[sheet_name]
        # 比较两个DataFrame
        comparison = df1.merge(df2, how='outer', indicator=True)
        comparison_results[sheet_name] = comparison[comparison['_merge'] != 'both']

第四步:分析差异

上述对比会返回一个新DataFrame,其中包含标记为left_only或right_only的行,表示只在左侧或右侧数据集中存在。此外,还可以通过left和right后缀访问原始数据列。


# 分析差异
for sheet_name, result in comparison_results.items():
    if not result.empty:
        print(f"Differences found in '{sheet_name}':")
        print(result)

第五步:保存对比结果

将对比结果保存到新的Excel文件中,便于后续分析或报告。


with pd.ExcelWriter('comparison_results.xlsx') as writer:
    for sheet_name, result in comparison_results.items():
        if not result.empty:
            result.to_excel(writer, sheet_name=sheet_name, index=False)

完整代码示例

下面是将上述步骤整合在一起的完整代码示例:


import pandas as pd
# 读取Excel文件
xlsx1 = pd.ExcelFile('file1.xlsx')
xlsx2 = pd.ExcelFile('file2.xlsx')
# 读取所有Sheet
sheets1 = {sheet_name: xlsx1.parse(sheet_name) for sheet_name in xlsx1.sheet_names}
sheets2 = {sheet_name: xlsx2.parse(sheet_name) for sheet_name in xlsx2.sheet_names}
# 创建一个空的字典来存储对比结果
comparison_results = {}
# 对比数据
for sheet_name in sheets1.keys():
    if sheet_name in sheets2:
        df1 = sheets1[sheet_name]
        df2 = sheets2[sheet_name]
        comparison = df1.merge(df2, how='outer', indicator=True)
        comparison_results[sheet_name] = comparison[comparison['_merge'] != 'both']
# 保存对比结果
with pd.ExcelWriter('comparison_results.xlsx') as writer:
    for sheet_name, result in comparison_results.items():
        if not result.empty:
            result.to_excel(writer, sheet_name=sheet_name, index=False)

通过上述步骤,你可以有效地对比两个Excel文件中多个Sheet的数据,找出差异并保存结果。这种方法特别适用于财务审计、数据清洗或任何需要跨数据集一致性检查的场景。

希望这篇指南能够帮助你在Python中处理复杂的Excel数据对比任务。

责任编辑:华轩 来源: 测试开发学习交流
相关推荐

2021-02-27 09:30:16

PythonExcelSheet

2021-01-14 10:24:55

压缩集合方式

2021-03-10 09:38:44

JeecgBoot 单表数据sheet实例

2022-06-17 09:46:51

Chrome 102Chrome浏览器

2016-10-25 13:58:36

数据图表化大数据

2011-09-20 15:19:15

Python

2020-04-17 10:13:51

Python开发工具

2020-10-25 08:47:36

Python有序字典

2019-08-28 10:00:34

Python测试工具命令

2020-11-13 07:16:09

线程互斥锁死循环

2015-11-12 10:32:06

数据中心数据中心优化数据中心整合

2021-04-06 11:44:44

数据平台数据科学数据仓库

2010-04-06 18:04:09

Oracle数据库

2011-04-15 10:21:07

Oracle数据库运算

2022-03-07 13:58:30

JavaScript原始数据前端

2010-09-10 15:26:05

SOAP封装

2009-07-16 10:39:00

SwingUtilit

2010-03-18 14:22:46

Python数据库连接

2011-06-29 09:16:40

Python

2022-07-05 15:15:11

Python日期命令
点赞
收藏

51CTO技术栈公众号