主要介紹如何通過DeepDiff實(shí)現(xiàn)兩個(gè)Excel文件數(shù)據(jù)的快速對比。
對于日常辦公中需要處理數(shù)據(jù)的同學(xué)來說,有時(shí)候需要對比兩個(gè)Excel表格(或者是數(shù)據(jù)庫)的數(shù)據(jù)是否完全相同。
對于簡單少量的數(shù)據(jù),我們當(dāng)然可以人工肉眼對比,但是如果數(shù)據(jù)量一大,那么最好還是借助工具實(shí)現(xiàn)。
這篇文章主要通過使用DeepDiff
庫,介紹了一種簡單地對比兩個(gè)Excel文件是否完全相同的方法。
首先,我們需要下載DeepDiff
庫:
pip install deepdiff
接著再進(jìn)行導(dǎo)入:
from deepdiff import DeepDiff
DeepDiff簡單使用
接下來我們創(chuàng)建4個(gè)簡單的Excel數(shù)據(jù),方便后續(xù)對比,通過pandas
讀取數(shù)據(jù):
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個(gè)Excel表格數(shù)據(jù)如下:
上面4個(gè)簡單示例數(shù)據(jù)中,我們可以非常明顯地看出來,data1跟data2時(shí)完全一致的,而data3跟data4只是數(shù)據(jù)的行順序跟列順序不一致,其本質(zhì)上還是一致的,在我們實(shí)際工作中,我們希望的出來的結(jié)果也是data3跟data4是一致的。
首先,我們直接對兩個(gè)不一樣的DataFrame進(jìn)行對比:
對比結(jié)果為{}
,這在DeepDiff
中是表示沒有差異的意思,但是,這個(gè)結(jié)果顯然不符合實(shí)際,因?yàn)槲覀兊膁ata1跟data3其實(shí)是完全不一樣的才對。
這是因?yàn)?code>DeepDiff并不支持DataFrame對象的比較。
為了能夠使用DeepDiff
,我們可以把DataFrame對象轉(zhuǎn)成字典對象。
可以看到,轉(zhuǎn)成字典之后我們成功地對data1和data2進(jìn)行比較,并給出了正確的結(jié)果:
為了驗(yàn)證,我們再拿data1和data3進(jìn)行比較:
很明顯,這兩個(gè)對象是有區(qū)別的,沒有任何問題。
接下來進(jìn)入我們的重頭戲,對比data3和data4,為了對比這兩個(gè)對象,我們可以先把數(shù)據(jù)轉(zhuǎn)成列表,然后再設(shè)置DeepDiff
中的ignore_order
參數(shù)忽略字典元素的順序:
可以看到,結(jié)果非常簡單完美地實(shí)現(xiàn)了我們的對比需求。
本文小結(jié)
本文只是對DeepDiff
的使用場景進(jìn)行了簡單介紹,實(shí)際上基于這個(gè)Python庫,我們還可以實(shí)現(xiàn)諸如JSON文件對比、數(shù)據(jù)庫數(shù)據(jù)對比等拓展操作。文章來源:http://www.zghlxwxcb.cn/news/detail-608940.html
本文完整示例代碼及文件可關(guān)注公眾號,回復(fù)“python”獲取。文章來源地址http://www.zghlxwxcb.cn/news/detail-608940.html
到了這里,關(guān)于超實(shí)用!使用Python快速對比兩個(gè)Excel表格之間的差異的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!