Risolto: i panda filtrano le righe per valori fuzzy

Nel mondo dell'analisi dei dati, è comune imbattersi in set di dati di grandi dimensioni che richiedono la manipolazione e l'elaborazione dei dati. Uno di questi problemi che si presenta spesso è filtrare le righe in base a valori sfocati, in particolare quando si tratta di dati testuali. Pandas, una popolare libreria Python per la manipolazione dei dati, fornisce una soluzione elegante per aiutare ad affrontare questo problema. In questo articolo, approfondiremo come utilizzare Panda per filtrare le righe utilizzando valori fuzzy, esploreremo il codice passo dopo passo e discuteremo le librerie e le funzioni pertinenti che possono aiutare a risolvere problemi simili.

Per iniziare ad affrontare questo problema, sfrutteremo il Pandas biblioteca insieme al sfocato libreria che aiuta a calcolare la somiglianza tra stringhe diverse. IL sfocato library utilizza la distanza di Levenshtein, una misura di somiglianza basata sul numero di modifiche (inserimenti, cancellazioni o sostituzioni) necessarie per trasformare una stringa in un'altra.

Installazione e importazione delle librerie richieste

Per iniziare, dovremo installare e importare le librerie necessarie. Puoi usare pip per installare sia Pandas che fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Una volta installato, importa le librerie nel tuo codice Python:

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtraggio delle righe in base a valori fuzzy

Ora che abbiamo importato le librerie richieste, creiamo un set di dati fittizio e mostriamo come filtrare le righe in base a valori fuzzy. In questo esempio, il nostro set di dati sarà composto dai nomi dei capi e dai loro stili corrispondenti.

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

Supponendo di voler filtrare le righe contenenti indumenti con nomi simili a "Maglietta", per farlo dovremo utilizzare la libreria 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)

Nel codice sopra, definiamo una funzione filtro_righe che accetta quattro parametri: il DataFrame, il nome della colonna, la stringa di ricerca e la soglia di somiglianza. Restituisce un DataFrame filtrato in base alla soglia specificata, che viene calcolata utilizzando il fuzz.token_sort_ratio funzione dalla libreria fuzzywuzzy.

Comprendere il codice passo dopo passo

  • Innanzitutto, creiamo un DataFrame chiamato df contenente il nostro set di dati.
  • Successivamente, definiamo la nostra stringa di ricerca come "Maglietta" e impostiamo una soglia di somiglianza di 70. È possibile regolare il valore della soglia in base al livello di somiglianza desiderato.
  • Creiamo quindi una funzione chiamata filtro_righe, che filtra il DataFrame in base alla distanza Levenshtein tra la stringa di ricerca e il valore di ogni riga nella colonna specificata.
  • Infine, chiamiamo il filtro_righe funzione per ottenere il nostro DataFrame filtrato, filtrato_df.

In conclusione, Pandas, in combinazione con la libreria fuzzywuzzy, è un ottimo strumento per filtrare le righe in base a valori fuzzy. La comprensione di queste librerie e delle loro funzioni ci consente di manipolare in modo efficiente i dati e risolvere complesse attività di elaborazione dei dati.

Related posts:

Lascia un tuo commento