主要介绍如何通过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文件对比、数据库数据对比等拓展操作。
网友评论