超實(shí)用!使用Python快速對比兩個(gè)Excel表格之間的差異 | 您所在的位置:網(wǎng)站首頁 › 屬猴的跟屬蛇 › 超實(shí)用!使用Python快速對比兩個(gè)Excel表格之間的差異 |
這是「活用數(shù)據(jù)」的第 11 篇原創(chuàng)文章
主要介紹如何通過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)镈eepDiff并不支持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ù)對比等拓展作。 本文完整示例代碼及文件可關(guān)注公眾號,回復(fù)“python”獲取。 |
今日新聞 |
推薦新聞 |
專題文章 |
CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有 |