Вирішено: панди фільтрують рядки за нечіткими значеннями

У світі аналізу даних зазвичай зустрічаються великі набори даних, які вимагають маніпулювання та обробки даних. Однією з таких проблем, яка часто виникає, є фільтрація рядків на основі нечітких значень, особливо при роботі з текстовими даними. Pandas, популярна бібліотека Python для обробки даних, надає елегантне рішення, яке допоможе вирішити цю проблему. У цій статті ми зануримося в те, як використовувати Pandas для фільтрації рядків за допомогою нечітких значень, крок за кроком вивчимо код і обговоримо відповідні бібліотеки та функції, які можуть допомогти у вирішенні подібних проблем.

Щоб почати вирішення цієї проблеми, ми використаємо Панди бібліотека разом з ім нечіткий бібліотека, яка допомагає обчислити подібність між різними рядками. The нечіткий Бібліотека використовує відстань Левенштейна, міру подібності, яка базується на кількості редагувань (вставок, видалень або замін), необхідних для перетворення одного рядка в інший.

Встановлення та імпортування необхідних бібліотек

Для початку нам потрібно буде встановити та імпортувати необхідні бібліотеки. Ви можете використовувати 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)

У наведеному вище коді ми визначаємо функцію filter_rows який приймає чотири параметри: DataFrame, назву стовпця, пошуковий рядок і поріг подібності. Він повертає відфільтрований DataFrame на основі вказаного порогового значення, яке обчислюється за допомогою fuzz.token_sort_ratio функція з бібліотеки fuzzywuzzy.

Розуміння коду крок за кроком

  • Спочатку ми створюємо DataFrame під назвою df містить наш набір даних.
  • Далі ми визначаємо наш пошуковий рядок як «футболка» та встановлюємо поріг подібності 70. Ви можете налаштувати порогове значення відповідно до бажаного рівня подібності.
  • Потім ми створюємо функцію під назвою filter_rows, який фільтрує DataFrame на основі відстані Левенштейна між рядком пошуку та значенням кожного рядка у вказаному стовпці.
  • Нарешті, ми називаємо filter_rows для отримання нашого відфільтрованого DataFrame, filtered_df.

Підсумовуючи, Pandas у поєднанні з бібліотекою fuzzywuzzy є чудовим інструментом для фільтрації рядків на основі нечітких значень. Розуміння цих бібліотек та їхніх функцій дозволяє нам ефективно маніпулювати даними та вирішувати складні завдання обробки даних.

Схожі повідомлення:

Залишити коментар