Résolu : les pandas filtrent les lignes par des valeurs floues

Dans le monde de l'analyse de données, il est courant de rencontrer de grands ensembles de données qui nécessitent une manipulation et un traitement des données. Un de ces problèmes qui se pose souvent est le filtrage des lignes en fonction de valeurs floues, en particulier lorsqu'il s'agit de données textuelles. Pandas, une bibliothèque Python populaire pour la manipulation de données, fournit une solution élégante pour aider à résoudre ce problème. Dans cet article, nous allons découvrir comment utiliser Pandas pour filtrer les lignes à l'aide de valeurs floues, explorer le code étape par étape et discuter des bibliothèques et fonctions pertinentes qui peuvent aider à résoudre des problèmes similaires.

Pour commencer à résoudre ce problème, nous tirerons parti de la Pandas bibliothèque avec la floue bibliothèque qui permet de calculer la similarité entre différentes chaînes. Le floue utilise la distance de Levenshtein, une mesure de similarité basée sur le nombre de modifications (insertions, suppressions ou substitutions) nécessaires pour transformer une chaîne en une autre.

Installation et importation des bibliothèques requises

Pour commencer, nous devrons installer et importer les bibliothèques nécessaires. Vous pouvez utiliser pip pour installer à la fois Pandas et fuzzywuzzy :

pip install pandas
pip install fuzzywuzzy

Une fois installées, importez les bibliothèques dans votre code Python :

import pandas as pd
from fuzzywuzzy import fuzz, process

Filtrage des lignes en fonction de valeurs floues

Maintenant que nous avons importé les bibliothèques requises, créons un ensemble de données fictives et montrons comment filtrer les lignes en fonction de valeurs floues. Dans cet exemple, notre ensemble de données sera composé de noms de vêtements et de leurs styles correspondants.

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

En supposant que nous voulions filtrer les lignes contenant des vêtements avec des noms similaires à "Tee shirt", nous devrons utiliser la bibliothèque fuzzywuzzy pour y parvenir.

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)

Dans le code ci-dessus, nous définissons une fonction filtre_lignes qui prend quatre paramètres : le DataFrame, le nom de la colonne, la chaîne de recherche et le seuil de similarité. Il renvoie un DataFrame filtré en fonction du seuil spécifié, qui est calculé à l'aide de la fuzz.token_sort_ratio fonction de la bibliothèque fuzzywuzzy.

Comprendre le code étape par étape

  • Tout d'abord, nous créons un DataFrame appelé df contenant notre ensemble de données.
  • Ensuite, nous définissons notre chaîne de recherche comme "Tee shirt" et définissons un seuil de similarité de 70. Vous pouvez ajuster la valeur du seuil en fonction du niveau de similarité souhaité.
  • Nous créons ensuite une fonction appelée filtre_lignes, qui filtre le DataFrame en fonction de la distance de Levenshtein entre la chaîne de recherche et la valeur de chaque ligne dans la colonne spécifiée.
  • Enfin, nous appelons filtre_lignes fonction pour obtenir notre DataFrame filtré, filtré_df.

En conclusion, Pandas, en combinaison avec la bibliothèque fuzzywuzzy, est un excellent outil pour filtrer les lignes en fonction des valeurs floues. Comprendre ces bibliothèques et leurs fonctions nous permet de manipuler efficacement les données et de résoudre des tâches complexes de traitement de données.

Articles connexes

Laisser un commentaire