美文网首页
超实用!使用Python快速对比两个Excel表格之间的差异

超实用!使用Python快速对比两个Excel表格之间的差异

作者: 活用数据 | 来源:发表于2022-09-26 22:45 被阅读0次

    主要介绍如何通过DeepDiff实现两个Excel文件数据的快速对比。

    对于日常办公中需要处理数据的同学来说,有时候需要对比两个Excel表格(或者是数据库)的数据是否完全相同。

    对于简单少量的数据,我们当然可以人工肉眼对比,但是如果数据量一大,那么最好还是借助工具实现。

    这篇文章主要通过使用DeepDiff库,介绍了一种简单地对比两个Excel文件是否完全相同的方法。

    首先,我们需要下载DeepDiff库:

    pip install deepdiff
    

    接着再进行导入:

    from deepdiff import DeepDiff
    

    DeepDiff简单使用

    接下来我们创建4个简单的Excel数据,方便后续对比,通过pandas读取数据:

    import pandas as pd
    
    df1 = pd.read_excel('data1.xlsx')
    df2 = pd.read_excel('data2.xlsx')
    df3 = pd.read_excel('data3.xlsx')
    df4 = pd.read_excel('data4.xlsx')
    
    

    4个Excel表格数据如下:


    上面4个简单示例数据中,我们可以非常明显地看出来,data1跟data2时完全一致的,而data3跟data4只是数据的行顺序跟列顺序不一致,其本质上还是一致的,在我们实际工作中,我们希望的出来的结果也是data3跟data4是一致的。

    首先,我们直接对两个不一样的DataFrame进行对比:


    对比结果为{},这在DeepDiff中是表示没有差异的意思,但是,这个结果显然不符合实际,因为我们的data1跟data3其实是完全不一样的才对。

    这是因为DeepDiff并不支持DataFrame对象的比较。

    为了能够使用DeepDiff,我们可以把DataFrame对象转成字典对象。

    可以看到,转成字典之后我们成功地对data1和data2进行比较,并给出了正确的结果:

    为了验证,我们再拿data1和data3进行比较:


    很明显,这两个对象是有区别的,没有任何问题。

    接下来进入我们的重头戏,对比data3和data4,为了对比这两个对象,我们可以先把数据转成列表,然后再设置DeepDiff中的ignore_order参数忽略字典元素的顺序:

    可以看到,结果非常简单完美地实现了我们的对比需求。

    本文小结

    本文只是对DeepDiff的使用场景进行了简单介绍,实际上基于这个Python库,我们还可以实现诸如JSON文件对比、数据库数据对比等拓展操作。

    相关文章

      网友评论

          本文标题:超实用!使用Python快速对比两个Excel表格之间的差异

          本文链接:https://www.haomeiwen.com/subject/efpqartx.html