91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么通過python模糊匹配算法對兩個excel表格內容歸類

發布時間:2023-05-11 17:19:49 來源:億速云 閱讀:98 作者:iii 欄目:開發技術

今天小編給大家分享一下怎么通過python模糊匹配算法對兩個excel表格內容歸類的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    一、問題描述

    在實習的時候,需要將兩個表格的內容進行匹配分類,比如兩個不同的工程項目針對的對象都是A,那么就需要將這兩個工程項目歸類到A當中,而這當中的工程項目和施工對象數量都還挺多的,因此想著寫個程序來自動將它們歸類起來,這樣可以減少很大一部分的工作量。

    二、運用方法

    由于兩個表格中擁有相似的關鍵詞,即一個表格的內容形式為為A工程項目,另一個表格的內容形式為A單位,那么我就需要將其中的“A”這個關鍵詞相匹配就能夠篩選出來了。能夠達到目的的程序寫法有不少,而我在這次的問題中選擇了通過模糊匹配的算法來實現該功能。

    三、代碼編寫

    注:這里我們導入了difflib庫,用于使用模糊匹配算法;xlwt庫,用于導出excel表格

    3.1

    首先我們導入兩個需要處理的excel表格。

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

    怎么通過python模糊匹配算法對兩個excel表格內容歸類

     兩個表格的內容形式大致如上。而我的需求是將這兩個表格相關的工程項目匹配歸類。

    3.2

    再將我們所要處理的兩列數據放入一個列表當中。

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

    3.3

    通過模糊匹配算法,將list2中的數據內容與list1中的數據內容一一匹配。

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

    需要注意的是,該處調用了difflib庫中的get_close_matches(query_word,list1,n,cutoff)方法,其中的query_word為被匹配的字符串;list1為要匹配的字符串列表;n為前topn個最佳匹配反回,我將其設置為1;cutoff為匹配度大小,為[0,1]的浮點數,也可以稱為兩者的相似程度,這個就看個人需求和具體問題來設置,我將其相似程度設置為0.42則恰好能夠將我所需要匹配的兩個表格的內容都匹配成功。

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

    3.4

    由于擔心會存在匹配結果遺漏的情況出現,因此我又將list1中的數據內容與list2中的數據內容一一匹配。

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

    這時我將被匹配的字符串設置為list1中的字符串,要匹配的字符串列表設置為list2,其他參數一樣,相當于說我先用表格1去匹配表格2,再用表格2去匹配表格1,這樣就能夠較好地解決遺漏的問題。

    3.5

    最后設置好新的excel表格的參數

    workbook=xlwt.Workbook(encoding='utf-8')#設定好新的excel表格的參數
    worksheet=workbook.add_sheet('test_sheet')
    worksheet.write(0,0,label='XXX改造')#從第0行第0列開始輸入標簽為XXX改造的數據
    worksheet.write(0,1,label='XX金額')#從第0行第1列開始輸入標簽為XX金額的數據
    worksheet.write(0,2,label='XXX新改')
    worksheet.write(0,3,label='XX金額')
    worksheet.write(0,4,label='已XXX金額')
     
    for i in range(len(listx)):#寫入運算出來的數據
        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:\雜貨\新項目6.xls')#導出excel表格

    這里使用的向excel表格中寫入數據內容的方法就不過多介紹,對于有一定處理excel經驗的人能夠很容易理解代碼的含義。

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

    怎么通過python模糊匹配算法對兩個excel表格內容歸類

     通過兩遍匹配,兩者相互匹配度都高的則會出對應地出現在表格中,而只有單一匹配度高的,則出現了左邊有數據右邊沒有數據,或者右邊有數據左邊沒有數據的情況。

    四、代碼集合

    import pandas as pd
    import difflib
    import xlwt#導入庫
     
    df1=pd.read_excel(r'D:\雜貨\項目.xlsx',sheet_name='Sheet1')
    df2=pd.read_excel(r'D:\雜貨\項目2.xlsx',sheet_name='Sheet1')#導入兩個需要處理的excel表格
     
    list1=[]#設置空列表,用于存儲2017年一列的數據
    list2=[]#用于存儲2018年一列的數據
    list3=list(df1['XX金額'])#將excel表格中的列數據列表化
    list4=list(df2['XX金額'])
    list5=list(df2['XXX金額'])
    listx=[]#用于存儲匹配結果的數據
    listy=[]#同上
    for i in df1['XXXXXXXXX改造']:#將這兩列的數據存入list1和list2兩個列表中
        list1.append(i)
    for j in df2['XXXXXXXXXXXXX新改']:
        list2.append(j)
     
    for n in range(len(list2)):#通過模糊匹配算法,將list2與list1中的數據一一匹配,設置近似度為42%,得到匹配結果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的數據一一匹配
        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')#設定好新的excel表格的參數
    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)):#寫入運算出來的數據
        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:\雜貨\新項目6.xls')#導出excel表格

    以上就是“怎么通過python模糊匹配算法對兩個excel表格內容歸類”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    额济纳旗| 浦东新区| 晋宁县| 河东区| 英吉沙县| 泰和县| 喀喇沁旗| 东阳市| 广南县| 平远县| 娄烦县| 益阳市| 隆昌县| 原平市| 德安县| 谷城县| 库尔勒市| 卢龙县| 衢州市| 乐安县| 衡山县| 永兴县| 青州市| 寿宁县| 宁德市| 仙游县| 通州市| 哈巴河县| 贡觉县| 乐至县| 青岛市| 巴林右旗| 伊宁县| 吉安市| 遂宁市| 苏尼特右旗| 冕宁县| 抚宁县| 海盐县| 临高县| 额尔古纳市|