最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過(guò)python模糊匹配算法對(duì)兩個(gè)excel表格內(nèi)容歸類

 更新時(shí)間:2023年03月22日 15:57:00   作者:二十六夜.  
這篇文章主要介紹了通過(guò)python模糊匹配算法對(duì)兩個(gè)excel表格內(nèi)容歸類,比如兩個(gè)不同的工程項(xiàng)目針對(duì)的對(duì)象都是A,那么就需要將這兩個(gè)工程項(xiàng)目歸類到A當(dāng)中,可以減少很大一部分工作量,,需要的朋友可以參考下

一、問(wèn)題描述

在實(shí)習(xí)的時(shí)候,需要將兩個(gè)表格的內(nèi)容進(jìn)行匹配分類,比如兩個(gè)不同的工程項(xiàng)目針對(duì)的對(duì)象都是A,那么就需要將這兩個(gè)工程項(xiàng)目歸類到A當(dāng)中,而這當(dāng)中的工程項(xiàng)目和施工對(duì)象數(shù)量都還挺多的,因此想著寫個(gè)程序來(lái)自動(dòng)將它們歸類起來(lái),這樣可以減少很大一部分的工作量。

二、運(yùn)用方法

由于兩個(gè)表格中擁有相似的關(guān)鍵詞,即一個(gè)表格的內(nèi)容形式為為A工程項(xiàng)目,另一個(gè)表格的內(nèi)容形式為A單位,那么我就需要將其中的“A”這個(gè)關(guān)鍵詞相匹配就能夠篩選出來(lái)了。能夠達(dá)到目的的程序?qū)懛ㄓ胁簧伲以谶@次的問(wèn)題中選擇了通過(guò)模糊匹配的算法來(lái)實(shí)現(xiàn)該功能。

三、代碼編寫

注:這里我們導(dǎo)入了difflib庫(kù),用于使用模糊匹配算法;xlwt庫(kù),用于導(dǎo)出excel表格

3.1

首先我們導(dǎo)入兩個(gè)需要處理的excel表格。

df1=pd.read_excel(r'D:\雜貨\項(xiàng)目.xlsx',sheet_name='Sheet1')
df2=pd.read_excel(r'D:\雜貨\項(xiàng)目2.xlsx',sheet_name='Sheet1')#導(dǎo)入兩個(gè)需要處理的excel表格

 兩個(gè)表格的內(nèi)容形式大致如上。而我的需求是將這兩個(gè)表格相關(guān)的工程項(xiàng)目匹配歸類。

導(dǎo)入方法不再贅述,詳見(jiàn):

如何在Python中導(dǎo)入EXCEL數(shù)據(jù)

3.2

再將我們所要處理的兩列數(shù)據(jù)放入一個(gè)列表當(dāng)中。

for i in df1['XXXXXX改造']:#將這兩列的數(shù)據(jù)存入list1和list2兩個(gè)列表中
    list1.append(i)
for j in df2['XXXXXX新改']:
    list2.append(j)

3.3

通過(guò)模糊匹配算法,將list2中的數(shù)據(jù)內(nèi)容與list1中的數(shù)據(jù)內(nèi)容一一匹配。

for n in range(len(list2)):#通過(guò)模糊匹配算法,將list2與list1中的數(shù)據(jù)一一匹配,設(shè)置近似度為42%,得到匹配結(jié)果res
    query_word=str(list2[n])
    res=difflib.get_close_matches(query_word,list1,1,cutoff=0.42)
    res = "".join(res)
    listx.append(res)

需要注意的是,該處調(diào)用了difflib庫(kù)中的get_close_matches(query_word,list1,n,cutoff)方法,其中的query_word為被匹配的字符串;list1為要匹配的字符串列表;n為前topn個(gè)最佳匹配反回,我將其設(shè)置為1;cutoff為匹配度大小,為[0,1]的浮點(diǎn)數(shù),也可以稱為兩者的相似程度,這個(gè)就看個(gè)人需求和具體問(wèn)題來(lái)設(shè)置,我將其相似程度設(shè)置為0.42則恰好能夠?qū)⑽宜枰ヅ涞膬蓚€(gè)表格的內(nèi)容都匹配成功。

由于res匹配出來(lái)的每一個(gè)結(jié)果都是是列表的形式,而我們想要將結(jié)果寫入新的表格當(dāng)中需要字符串形式的結(jié)果,因此使用res=””.join(res)方法將列表轉(zhuǎn)換為字符串的形式,然后將字符串形式的結(jié)果放入listx列表當(dāng)中,以便于寫入新的excel表格。

3.4

由于擔(dān)心會(huì)存在匹配結(jié)果遺漏的情況出現(xiàn),因此我又將list1中的數(shù)據(jù)內(nèi)容與list2中的數(shù)據(jù)內(nèi)容一一匹配。

for m in range(len(list1)):#同上,將list1與list2的數(shù)據(jù)一一匹配
    query_word=str(list1[m])
    res=difflib.get_close_matches(query_word,list2,1,cutoff=0.42)
    res="".join(res)
    listy.append(res)

這時(shí)我將被匹配的字符串設(shè)置為list1中的字符串,要匹配的字符串列表設(shè)置為list2,其他參數(shù)一樣,相當(dāng)于說(shuō)我先用表格1去匹配表格2,再用表格2去匹配表格1,這樣就能夠較好地解決遺漏的問(wèn)題。

3.5

最后設(shè)置好新的excel表格的參數(shù)

workbook=xlwt.Workbook(encoding='utf-8')#設(shè)定好新的excel表格的參數(shù)
worksheet=workbook.add_sheet('test_sheet')
worksheet.write(0,0,label='XXX改造')#從第0行第0列開始輸入標(biāo)簽為XXX改造的數(shù)據(jù)
worksheet.write(0,1,label='XX金額')#從第0行第1列開始輸入標(biāo)簽為XX金額的數(shù)據(jù)
worksheet.write(0,2,label='XXX新改')
worksheet.write(0,3,label='XX金額')
worksheet.write(0,4,label='已XXX金額')
 
for i in range(len(listx)):#寫入運(yùn)算出來(lái)的數(shù)據(jù)
    worksheet.write(i+1,0,label=listx[i])
for j in range(len(listy)):
    worksheet.write(j+1,2,label=listy[j])
for k in range(len(list1)):
    worksheet.write(k+1,1,label=list3[k])
for l in range(len(list2)):
    worksheet.write(l+1,3,label=list4[l])
    worksheet.write(l+1,4,label=list5[l])
workbook.save(r'D:\雜貨\新項(xiàng)目6.xls')#導(dǎo)出excel表格

這里使用的向excel表格中寫入數(shù)據(jù)內(nèi)容的方法就不過(guò)多介紹,對(duì)于有一定處理excel經(jīng)驗(yàn)的人能夠很容易理解代碼的含義。

最后輸出的表格形式如下:

 通過(guò)兩遍匹配,兩者相互匹配度都高的則會(huì)出對(duì)應(yīng)地出現(xiàn)在表格中,而只有單一匹配度高的,則出現(xiàn)了左邊有數(shù)據(jù)右邊沒(méi)有數(shù)據(jù),或者右邊有數(shù)據(jù)左邊沒(méi)有數(shù)據(jù)的情況。

四、代碼集合

import pandas as pd
import difflib
import xlwt#導(dǎo)入庫(kù)
 
df1=pd.read_excel(r'D:\雜貨\項(xiàng)目.xlsx',sheet_name='Sheet1')
df2=pd.read_excel(r'D:\雜貨\項(xiàng)目2.xlsx',sheet_name='Sheet1')#導(dǎo)入兩個(gè)需要處理的excel表格
 
list1=[]#設(shè)置空列表,用于存儲(chǔ)2017年一列的數(shù)據(jù)
list2=[]#用于存儲(chǔ)2018年一列的數(shù)據(jù)
list3=list(df1['XX金額'])#將excel表格中的列數(shù)據(jù)列表化
list4=list(df2['XX金額'])
list5=list(df2['XXX金額'])
listx=[]#用于存儲(chǔ)匹配結(jié)果的數(shù)據(jù)
listy=[]#同上
for i in df1['XXXXXXXXX改造']:#將這兩列的數(shù)據(jù)存入list1和list2兩個(gè)列表中
    list1.append(i)
for j in df2['XXXXXXXXXXXXX新改']:
    list2.append(j)
 
for n in range(len(list2)):#通過(guò)模糊匹配算法,將list2與list1中的數(shù)據(jù)一一匹配,設(shè)置近似度為42%,得到匹配結(jié)果res
    query_word=str(list2[n])
    res=difflib.get_close_matches(query_word,list1,1,cutoff=0.42)
    res = "".join(res)
    listx.append(res)
 
for m in range(len(list1)):#同上,將list1與list2的數(shù)據(jù)一一匹配
    query_word=str(list1[m])
    res=difflib.get_close_matches(query_word,list2,1,cutoff=0.42)
    res="".join(res)
    listy.append(res)
 
workbook=xlwt.Workbook(encoding='utf-8')#設(shè)定好新的excel表格的參數(shù)
worksheet=workbook.add_sheet('test_sheet')
worksheet.write(0,0,label='XXXXXXXXX改造')
worksheet.write(0,1,label='XX金額')
worksheet.write(0,2,label='XXXXXXXXXXX新改')
worksheet.write(0,3,label='XX金額')
worksheet.write(0,4,label='XXX金額')
 
for i in range(len(listx)):#寫入運(yùn)算出來(lái)的數(shù)據(jù)
    worksheet.write(i+1,0,label=listx[i])
for j in range(len(listy)):
    worksheet.write(j+1,2,label=listy[j])
for k in range(len(list1)):
    worksheet.write(k+1,1,label=list3[k])
for l in range(len(list2)):
    worksheet.write(l+1,3,label=list4[l])
    worksheet.write(l+1,4,label=list5[l])
workbook.save(r'D:\雜貨\新項(xiàng)目6.xls')#導(dǎo)出excel表格

五、總結(jié)

本篇的重點(diǎn)在于使用了模糊匹配的算法,并且介紹該算法的使用才是本篇的目的。其他的內(nèi)容則是用于輔助介紹該算法。

到此這篇關(guān)于通過(guò)python模糊匹配算法對(duì)兩個(gè)excel表格內(nèi)容歸類的文章就介紹到這了,更多相關(guān)python模糊匹配算法excel表格歸類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python生成密碼字典詳解

    python生成密碼字典詳解

    大家好,本篇文章主要講的是python生成密碼字典詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python爬蟲實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題

    Python爬蟲實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題

    這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)selenium處理iframe作用域問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱

    Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱

    這篇文章主要為大家詳細(xì)介紹了Python處理excel根據(jù)全稱自動(dòng)填寫簡(jiǎn)稱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Python爬蟲的兩套解析方法和四種爬蟲實(shí)現(xiàn)過(guò)程

    Python爬蟲的兩套解析方法和四種爬蟲實(shí)現(xiàn)過(guò)程

    本文想針對(duì)某一網(wǎng)頁(yè)對(duì) python 基礎(chǔ)爬蟲的兩大解析庫(kù)( BeautifulSoup 和 lxml )和幾種信息提取實(shí)現(xiàn)方法進(jìn)行分析,及同一網(wǎng)頁(yè)爬蟲的四種實(shí)現(xiàn)方式,需要的朋友參考下吧
    2018-07-07
  • Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)softmax反向傳播的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-04-04
  • 在Python下嘗試多線程編程

    在Python下嘗試多線程編程

    這篇文章主要介紹了在Python下多線程編程的嘗試,由于GIL的存在,多線程在Python開發(fā)領(lǐng)域一直是個(gè)熱門問(wèn)題,需要的朋友可以參考下
    2015-04-04
  • python框架flask入門之環(huán)境搭建及開啟調(diào)試

    python框架flask入門之環(huán)境搭建及開啟調(diào)試

    這篇文章主要介紹了python框架flask入門環(huán)境搭建及開啟調(diào)試的步驟設(shè)置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python文件讀寫操作與linux shell變量命令交互執(zhí)行的方法

    python文件讀寫操作與linux shell變量命令交互執(zhí)行的方法

    這篇文章主要介紹了python文件讀寫操作與linux shell變量命令交互執(zhí)行的方法,涉及對(duì)文件操作及Linux shell交互的技巧,需要的朋友可以參考下
    2015-01-01
  • python使用pywinauto驅(qū)動(dòng)微信客戶端實(shí)現(xiàn)公眾號(hào)爬蟲

    python使用pywinauto驅(qū)動(dòng)微信客戶端實(shí)現(xiàn)公眾號(hào)爬蟲

    這個(gè)項(xiàng)目是通過(guò)pywinauto控制windows(win10)上的微信PC客戶端來(lái)實(shí)現(xiàn)公眾號(hào)文章的抓取。代碼分成server和client兩部分。server接收client抓取的微信公眾號(hào)文章,并且保存到數(shù)據(jù)庫(kù)。另外server支持簡(jiǎn)單的搜索和導(dǎo)出功能。client通過(guò)pywinauto實(shí)現(xiàn)微信公眾號(hào)文章的抓取。
    2021-05-05
  • Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法

    Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法

    今天小編就為大家分享一篇Python 利用內(nèi)置set函數(shù)對(duì)字符串和列表進(jìn)行去重的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論

黑水县| 贵德县| 永平县| 调兵山市| 当阳市| 车致| 海盐县| 苏尼特右旗| 扶余县| 东乡县| 永宁县| 昌图县| 东台市| 张家港市| 天气| 休宁县| 沁水县| 怀来县| 巍山| 囊谦县| 昭通市| 乌兰县| 日土县| 北京市| 什邡市| 德安县| 镇赉县| 黄平县| 衡阳县| 宁国市| 安康市| 长汀县| 体育| 巫山县| 凌源市| 枝江市| 徐水县| 琼海市| 广平县| 遂川县| 卢氏县|