久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

列表性能中的Python模糊匹配字符串

Python Fuzzy matching strings in list performance(列表性能中的Python模糊匹配字符串)
本文介紹了列表性能中的Python模糊匹配字符串的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我正在檢查 4 個(gè)相同的數(shù)據(jù)框列中是否有類似的結(jié)果(模糊匹配),并且我有以下代碼作為示例.當(dāng)我將它應(yīng)用到真正的 40.000 行 x 4 列數(shù)據(jù)集時(shí),它會(huì)一直在 eternum 中運(yùn)行.問(wèn)題是代碼太慢了.例如,如果我將數(shù)據(jù)集限制為 10 個(gè)用戶,計(jì)算需要 8 分鐘,而計(jì)算需要 20、19 分鐘.有什么我想念的嗎?我不知道為什么要花那么長(zhǎng)時(shí)間.我希望在 2 小時(shí)或更短的時(shí)間內(nèi)獲得所有結(jié)果.任何提示或幫助將不勝感激.

I'm checking if there are similar results (fuzzy match) in 4 same dataframe columns, and I have the following code, as an example. When I apply it to the real 40.000 rows x 4 columns dataset, keeps running in eternum. The issue is that the code is too slow. For example, if I limite the dataset to 10 users, it takes 8 minutes to compute, while for 20, 19 minutes. Is there anything I am missing? I do not know why this take that long. I expect to have all results, maximum in 2 hours or less. Any hint or help would be greatly appreciated.

from fuzzywuzzy import process
dataframecolumn = ["apple","tb"]
compare = ["adfad","apple","asple","tab"]
Ratios = [process.extract(x,compare) for x in dataframecolumn]
result = list()
for ratio in Ratios:
    for match in ratio:
        if match[1] != 100:
            result.append(match)
            break
print (result) 

輸出:[('asple', 80), ('tab', 80)]

Output: [('asple', 80), ('tab', 80)]

推薦答案

通過(guò)編寫矢量化操作和避免循環(huán)來(lái)顯著提高速度

Major speed improvements come by writing vectorized operations and avoiding loops

導(dǎo)入必要的包

from fuzzywuzzy import fuzz
import pandas as pd
import numpy as np

從第一個(gè)列表創(chuàng)建數(shù)據(jù)框

dataframecolumn = pd.DataFrame(["apple","tb"])
dataframecolumn.columns = ['Match']

從第二個(gè)列表創(chuàng)建數(shù)據(jù)框

compare = pd.DataFrame(["adfad","apple","asple","tab"])
compare.columns = ['compare']

Merge - 通過(guò)引入鍵(自連接)的笛卡爾積

dataframecolumn['Key'] = 1
compare['Key'] = 1
combined_dataframe = dataframecolumn.merge(compare,on="Key",how="left")
combined_dataframe = combined_dataframe[~(combined_dataframe.Match==combined_dataframe.compare)]

矢量化

def partial_match(x,y):
    return(fuzz.ratio(x,y))
partial_match_vector = np.vectorize(partial_match)

使用矢量化并通過(guò)設(shè)置閾值來(lái)獲得所需的結(jié)果

combined_dataframe['score']=partial_match_vector(combined_dataframe['Match'],combined_dataframe['compare'])
combined_dataframe = combined_dataframe[combined_dataframe.score>=80]

結(jié)果

+--------+-----+--------+------+
| Match  | Key | compare | score
+--------+-----+--------+------+
| apple  | 1   |   asple |    80
|  tb    | 1   |   tab   |    80
+--------+-----+--------+------+

這篇關(guān)于列表性能中的Python模糊匹配字符串的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來(lái)源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問(wèn)題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

How to draw a rectangle around a region of interest in python(如何在python中的感興趣區(qū)域周圍繪制一個(gè)矩形)
How can I detect and track people using OpenCV?(如何使用 OpenCV 檢測(cè)和跟蹤人員?)
How to apply threshold within multiple rectangular bounding boxes in an image?(如何在圖像的多個(gè)矩形邊界框中應(yīng)用閾值?)
How can I download a specific part of Coco Dataset?(如何下載 Coco Dataset 的特定部分?)
Detect image orientation angle based on text direction(根據(jù)文本方向檢測(cè)圖像方向角度)
Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 檢測(cè)圖像中矩形的中心和角度)
主站蜘蛛池模板: 亚洲一区二区三区 | 精品成人一区二区 | 黄色av网站在线免费观看 | 东京av男人的天堂 | 亚洲精品成人 | 亚洲天堂av在线 | 亚洲一区二区精品视频 | 欧美日韩亚洲国产综合 | 国产视频在线一区二区 | 91pron在线| 中文字幕亚洲一区二区三区 | 成人在线不卡 | www久久久 | 亚洲视频在线观看免费 | 蜜桃av人人夜夜澡人人爽 | 久久国产精品视频 | 一级黄色在线 | 日韩精品视频在线 | 337p日本欧洲亚洲大胆鲁鲁 | 欧美一区永久视频免费观看 | 99亚洲精品 | 中文日韩在线视频 | 天天在线操 | 亚洲人成人一区二区在线观看 | 亚洲美女网站 | 国产乱码精品一区二三赶尸艳谈 | 国产亚洲黄色片 | 超碰在线人人 | 欧美激情一区 | 99久久婷婷国产亚洲终合精品 | 亚洲精品久久久久中文字幕二区 | 亚州激情| 日本在线播放一区二区 | 色婷婷狠狠 | 亚洲精品9999久久久久 | 91精品一区二区三区久久久久久 | 亚洲国产精品久久 | 久久久久久国产精品免费免费狐狸 | 一区二区三区播放 | 亚洲成人一区 | 国产福利在线小视频 |