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

В мире анализа данных часто встречаются большие наборы данных, требующие манипулирования и обработки данных. Одной из таких часто возникающих проблем является фильтрация строк на основе нечетких значений, особенно при работе с текстовыми данными. Pandas, популярная библиотека Python для обработки данных, предлагает элегантное решение, помогающее решить эту проблему. В этой статье мы рассмотрим, как использовать Pandas для фильтрации строк с использованием нечетких значений, пошагово изучим код и обсудим соответствующие библиотеки и функции, которые могут помочь в решении подобных проблем.

Чтобы приступить к решению этой проблемы, мы воспользуемся Панды библиотека вместе с нечеткий библиотека, которая помогает вычислить сходство между разными строками. нечеткий библиотека использует расстояние Левенштейна, меру подобия, основанную на количестве правок (вставок, удалений или замен), необходимых для преобразования одной строки в другую.

Установка и импорт необходимых библиотек

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

Предполагая, что мы хотим отфильтровать строки, содержащие предметы одежды с названиями, похожими на «Футболка», для этого нам потребуется использовать библиотеку 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, имя столбца, строку поиска и порог подобия. Он возвращает отфильтрованный кадр данных на основе указанного порога, который рассчитывается с использованием fuzz.token_sort_ratio функция из библиотеки fuzzywuzzy.

Понимание кода шаг за шагом

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

В заключение, Pandas в сочетании с библиотекой fuzzywuzzy — отличный инструмент для фильтрации строк на основе нечетких значений. Понимание этих библиотек и их функций позволяет нам эффективно манипулировать данными и решать сложные задачи обработки данных.

Похожие посты:

Оставьте комментарий