利用Python实现去重聚合Excel数据并对比两份数据的差异

 更新时间:2023年11月09日 07:31:43   作者:qwerrt9  
在数据处理过程中,常常需要将多个数据表进行合并,并进行比对,以便找出数据的差异和共同之处,本文将介绍如何使用 Pandas 库对两个 Excel 数据表进行合并与比对,需要的可以参考下

问题背景

在数据处理过程中,常常需要将多个数据表进行合并,并进行比对,以便找出数据的差异和共同之处。本文将介绍如何使用 Pandas 库对两个 Excel 数据表进行合并与比对,并将结果输出到新的 Excel 文件中。

读取数据表

首先,我们使用 Pandas 库中的 read_excel 函数来读取两个 Excel 文件中的数据,分别存储到 left_df 和 right_df 变量中。

import pandas as pd

left_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据1.xlsx')
right_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据2.xlsx')

数据表分组求和

接下来,我们对 left_df 和 right_df 分别按照 '店铺名称' 和 '订单号' 进行分组,并对其他列进行求和操作。

left_df = left_df.groupby(['店铺名称', '订单号'], as_index=False).sum()
right_df = right_df.groupby(['店铺名称', '订单号'], as_index=False).sum()

合并数据表

然后,我们使用 merge 函数将经过分组求和后的两个 DataFrame 进行合并,同时启用标记列以标识每行数据的来源。

merged_df = pd.merge(left_df, right_df, how='outer', on=['订单号', '店铺名称'], indicator=True)

添加标记结果列

根据合并的结果,我们添加一个新列 'merge_result',用于标记每条记录属于左侧有的数据、都有的数据还是右侧有的数据。

conditions = [
    (merged_df['_merge'] == 'left_only'), # 左侧有的数据
    (merged_df['_merge'] == 'both'), # 左右两边都有的数据
    (merged_df['_merge'] == 'right_only') # 右侧有的数据
]
choices = ['Left only', 'Both', 'Right only']

merged_df['merge_result'] = np.select(conditions, choices)

保存结果到 Excel 文件

最后,我们将合并后的结果写入到新的 Excel 文件中,以便进一步分析和分享。

merged_df.to_excel('merged.xlsx', index=False)

总结

通过以上步骤,我们成功地使用 Pandas 完成了两个数据表的合并与比对,并将结果保存到了新的 Excel 文件中。这个过程为我们展示了如何利用 Pandas 库进行数据处理和分析,为日常工作中的数据清洗和整合提供了有力的支持。

完整代码

import pandas as pd
import numpy as np

# 读取两个 Excel 文件
left_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据1.xlsx')
right_df = pd.read_excel('C:\\Users\\Admin\\Desktop\\数据核对\\数据2.xlsx')

# 对 left_df DataFrame 进行分组求和
left_df = left_df.groupby(['店铺名称', '订单号'], as_index=False).sum()

# 对 right_df DataFrame 进行分组求和
right_df = right_df.groupby(['店铺名称', '订单号'], as_index=False).sum()

# 合并两个数据表,并启用标记列
merged_df = pd.merge(left_df, right_df, how='outer', on=['订单号', '店铺名称'], indicator=True)
# 使用 merge 函数将左右两个 DataFrame 进行合并
# how='outer' 表示执行外连接操作,包括左边有的、都有的和右边有的数据
# on=['订单号', '店铺名称'] 表示合并所依据的关键字列名是 '订单号' 和 '店铺名称'
# indicator=True 表示启用一个标记列 '_merge' 来标记每个行的来源

# 根据标记列的值,添加一个标记结果列
conditions = [
(merged_df['_merge'] == 'left_only'), # 左侧有的数据
(merged_df['_merge'] == 'both'), # 左右两边都有的数据
(merged_df['_merge'] == 'right_only') # 右侧有的数据
]
choices = ['Left only', 'Both', 'Right only']
# 对应上述条件的选择,分别为左侧有的数据、都有的数据、右侧有的数据
merged_df['merge_result'] = np.select(conditions, choices)
# 使用 np.select 函数根据条件和选择,在 DataFrame 中添加一个新列 'merge_result',标记为左侧有的数据、都有的数据或右侧有的数据

# 将结果写入到 Excel 文件中
merged_df.to_excel('merged.xlsx', index=False)
# 将合并后的结果写入到 Excel 文件 'merged.xlsx' 中,不包含索引列

以上就是利用Python实现去重聚合Excel数据并对比两份数据的差异的详细内容,更多关于Python对比Excel数据的资料请关注脚本之家其它相关文章!

相关文章

  • tensorflow实现训练变量checkpoint的保存与读取

    tensorflow实现训练变量checkpoint的保存与读取

    今天小编就为大家分享一篇tensorflow实现训练变量checkpoint的保存与读取,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • pycharm 在windows上编辑代码用linux执行配置的方法

    pycharm 在windows上编辑代码用linux执行配置的方法

    今天小编就为大家分享一篇pycharm 在windows上编辑代码用linux执行配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python中的 is 和 == 以及字符串驻留机制详解

    Python中的 is 和 == 以及字符串驻留机制详解

    这篇文章主要介绍了Python中的 is 和 == 以及字符串驻留机制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 结合Python网络爬虫做一个今日新闻小程序

    结合Python网络爬虫做一个今日新闻小程序

    本篇文章介绍了我在开发过程中遇到的一个问题,以及解决该问题的过程及思路,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • 玩转python爬虫之URLError异常处理

    玩转python爬虫之URLError异常处理

    这篇文章主要介绍了python爬虫的URLError异常处理,详细探寻一下URL\HTTP异常处理的相关内容,通过一些具体的实例来分析一下,非常的简单,但是却很实用,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 关于Python常用模块时间模块time

    关于Python常用模块时间模块time

    这篇文章主要介绍了关于Python常用模块时间模块time,这个模块是Python自带的,我们不需要去下载,直接导入就可以使用,需要的朋友可以参考下
    2023-04-04
  • 在Django中管理Users和Permissions以及Groups的方法

    在Django中管理Users和Permissions以及Groups的方法

    这篇文章主要介绍了在Django中管理Users和Permissions以及Groups的方法,Django是最具人气的Python web开发框架,需要的朋友可以参考下
    2015-07-07
  • Python读取Ansible playbooks返回信息示例解析

    Python读取Ansible playbooks返回信息示例解析

    这篇文章主要为大家介绍了Python读取Ansible playbooks返回信息示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python实现自动运行代码的方法详解

    Python实现自动运行代码的方法详解

    在软件开发和数据科学领域,自动运行代码是提高效率和确保一致性的关键,本文将深入探讨如何使用Python实现自动运行代码的各种方法,希望对大家有所帮助
    2023-12-12
  • Python利用Turtle库绘制一个小老虎

    Python利用Turtle库绘制一个小老虎

    虎年就是要画老虎!本文将通过Python中的Turtle库绘制一个可爱的小老虎,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-02-02

最新评论