Resolvido: pandas filtram linhas por valores difusos

No mundo da análise de dados, é comum encontrar grandes conjuntos de dados que requerem manipulação e processamento de dados. Um desses problemas que frequentemente surge é a filtragem de linhas com base em valores difusos, principalmente ao lidar com dados textuais. Pandas, uma biblioteca Python popular para manipulação de dados, fornece uma solução elegante para ajudar a resolver esse problema. Neste artigo, vamos nos aprofundar em como usar o Pandas para filtrar linhas usando valores difusos, explorar o código passo a passo e discutir bibliotecas e funções relevantes que podem ajudar na solução de problemas semelhantes.

Para começar a resolver esse problema, aproveitaremos o Pandas biblioteca juntamente com o felpudo, macio biblioteca que ajuda a calcular a similaridade entre strings diferentes. O felpudo, macio A biblioteca usa a distância de Levenshtein, uma medida de similaridade baseada no número de edições (inserções, exclusões ou substituições) necessárias para transformar uma string em outra.

Instalando e importando as bibliotecas necessárias

Para começar, precisamos instalar e importar as bibliotecas necessárias. Você pode usar o pip para instalar o Pandas e o fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Uma vez instalado, importe as bibliotecas em seu código Python:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrando linhas com base em valores difusos

Agora que importamos as bibliotecas necessárias, vamos criar um conjunto de dados fictício e mostrar como filtrar linhas com base em valores difusos. Neste exemplo, nosso conjunto de dados consistirá em nomes de roupas e seus estilos correspondentes.

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

Assumindo que queremos filtrar linhas contendo roupas com nomes semelhantes a “Tee shirt”, precisaremos empregar a biblioteca fuzzywuzzy para fazer isso.

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)

No código acima, definimos uma função filtro_linhas que leva quatro parâmetros: o DataFrame, o nome da coluna, a string de pesquisa e o limite de similaridade. Ele retorna um DataFrame filtrado com base no limite especificado, que é calculado usando o fuzz.token_sort_ratio função da biblioteca fuzzywuzzy.

Entendendo o código passo a passo

  • Primeiro, criamos um DataFrame chamado df contendo nosso conjunto de dados.
  • Em seguida, definimos nossa string de pesquisa como “Camiseta” e definimos um limite de similaridade de 70. Você pode ajustar o valor do limite de acordo com o nível de similaridade desejado.
  • Em seguida, criamos uma função chamada filtro_linhas, que filtra o DataFrame com base na distância de Levenshtein entre a string de pesquisa e o valor de cada linha na coluna especificada.
  • Finalmente, chamamos o filtro_linhas função para obter nosso DataFrame filtrado, filtrado_df.

Em conclusão, o Pandas, em combinação com a biblioteca fuzzywuzzy, é uma excelente ferramenta para filtrar linhas com base em valores fuzzy. Compreender essas bibliotecas e suas funções nos permite manipular dados com eficiência e resolver tarefas complexas de processamento de dados.

Artigos relacionados:

Deixe um comentário