在数据处理与分析中,经常需要比较来自不同来源的数据集,特别是在处理涉及多个Excel工作簿和工作表的场景时。Python的Pandas库提供了强大的工具,可以帮助我们高效地完成这一任务。下面,我们将一步步引导你如何使用Python对比两个Excel文件中多个Sheet的数据。
确保你的Python环境中已安装pandas和openpyxl。如果没有安装,可以通过以下命令安装:
pip install pandas openpyxl
使用pandas.ExcelFile或pandas.read_excel直接读取多个Sheet的数据。
import pandas as pd# 读取第一个Excel文件的所有Sheetxlsx1 = pd.ExcelFile('file1.xlsx')sheets1 = {sheet_name: xlsx1.parse(sheet_name) for sheet_name in xlsx1.sheet_names}# 读取第二个Excel文件的所有Sheetxlsx2 = 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')# 读取所有Sheetsheets1 = {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数据对比任务。
本文链接:http://www.28at.com/showinfo-26-101107-0.htmlPython两个Excel多Sheet数据对比
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 智启万象|2024 Google 谷歌开发者大会邀你报名「畅享家」
下一篇: 一图看懂八大扩展系统的方法