已解決:pandas 按模糊值過濾行

在數據分析領域,經常會遇到需要數據操作和處理的大型數據集。 經常出現的此類問題之一是根據模糊值過濾行,尤其是在處理文本數據時。 Pandas 是一個流行的用於數據操作的 Python 庫,它提供了一個優雅的解決方案來幫助解決這個問題。 在本文中,我們將深入探討如何使用 Pandas 使用模糊值過濾行,逐步探索代碼,並討論有助於解決類似問題的相關庫和函數。

為了開始解決這個問題,我們將利用 大熊貓 圖書館與 模糊模糊 幫助計算不同字符串之間相似度的庫。 這 模糊模糊 庫使用 Levenshtein 距離,這是一種基於將一個字符串轉換為另一個字符串所需的編輯(插入、刪除或替換)次數的相似性度量。

安裝和導入所需的庫

首先,我們需要安裝並導入必要的庫。 您可以使用 pip 安裝 Pandas 和 fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

安裝後,將庫導入 Python 代碼中:

import pandas as pd
from fuzzywuzzy import fuzz, process

根據模糊值過濾行

現在我們已經導入了所需的庫,讓我們創建一個虛構的數據集並展示如何根據模糊值過濾行。 在此示例中,我們的數據集將包含服裝名稱及其相應的款式。

data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'],
        'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']}
df = pd.DataFrame(data)

假設我們要過濾包含名稱類似於“Tee shirt”的服裝的行,我們將需要使用 fuzzywuzzy 庫來完成此操作。

search_string = "Tee shirt"
threshold = 70

def filter_rows(df, column, search_string, threshold):
    return df[df[column].apply(lambda x: fuzz.token_sort_ratio(x, search_string)) >= threshold]

filtered_df = filter_rows(df, 'Garment', search_string, threshold)

在上面的代碼中,我們定義了一個函數 過濾行 它有四個參數:DataFrame、列名、搜索字符串和相似度閾值。 它根據指定的閾值返回一個過濾後的 DataFrame,該閾值是使用 模糊.token_sort_ratio 來自 fuzzywuzzy 庫的函數。

逐步理解代碼

  • 首先,我們創建一個名為 df 包含我們的數據集。
  • 接下來,我們將搜索字符串定義為“Tee shirt”,並將相似度閾值設置為 70。您可以根據所需的相似度級別調整閾值。
  • 然後我們創建一個名為 過濾行,它根據搜索字符串與指定列中每一行的值之間的 Levenshtein 距離過濾 DataFrame。
  • 最後,我們稱 過濾行 函數來獲取我們過濾後的 DataFrame, 過濾後的_df.

總之,Pandas 與 fuzzywuzzy 庫相結合,是一種基於模糊值過濾行的出色工具。 了解這些庫及其功能可以讓我們高效地操作數據並解決複雜的數據處理任務。

相關文章:

發表評論