Suppression des doublons en Python : Un guide complet
Les données en double peuvent poser un problème courant à quiconque travaille avec des données, en particulier ceux qui utilisent Python comme langage de programmation. Les doublons peuvent prêter à confusion et, dans certains cas, entraîner des erreurs dans le code. Dans ce guide, nous explorerons les différentes méthodes pour supprimer les doublons en Python, des fonctions intégrées aux techniques plus avancées.
Utiliser le type de données set pour supprimer les doublons
La méthode la plus simple pour supprimer les doublons en Python consiste à utiliser le type de données set. Un ensemble (set) est une collection non ordonnée d'éléments uniques. Ainsi, en convertissant une liste en un ensemble, nous pouvons facilement supprimer tous les doublons. Voici un exemple :
en convertissant une liste en un ensemble, nous pouvons facilement supprimer tous les doublons dans une liste Python
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
unique_list = list(my_set)
print(unique_list)Cela produira la sortie suivante :
[1, 2, 3, 4, 5]Comme vous pouvez le voir, tous les doublons ont été supprimés de la liste d'origine. Cette méthode est très rapide et efficace, ce qui en fait un excellent choix pour les listes de petite à moyenne taille.
Utiliser dict.fromkeys() pour préserver l'ordre
Le type de données set est excellent pour supprimer les doublons, mais il ne préserve pas l'ordre des éléments de la liste d'origine. À partir de Python 3.7+, les dictionnaires standards préservent l'ordre d'insertion, faisant de dict.fromkeys() la norme moderne pour la déduplication tout en maintenant l'ordre. Voici un exemple :
en utilisant dict.fromkeys(), nous pouvons facilement supprimer tous les doublons dans une liste Python
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(dict.fromkeys(my_list))
print(unique_list)Cela produira la sortie suivante :
[1, 2, 3, 4, 5]La méthode dict.fromkeys() préserve l'ordre des éléments de la liste d'origine. Pour assurer la compatibilité avec les anciennes versions de Python, vous pouvez toujours utiliser OrderedDict issu du module collections.
Utiliser la bibliothèque Pandas pour les DataFrames
Si vous travaillez avec des données sous forme tabulaire, comme un fichier CSV, vous pouvez utiliser la bibliothèque Pandas pour supprimer les doublons. Pandas est une bibliothèque puissante pour l'analyse de données et elle offre un moyen pratique de manipuler des données au format DataFrame.
Voici un exemple :
Lecture de données depuis un fichier CSV avec Pandas et suppression des doublons en Python
import pandas as pd
df = pd.read_csv('my_data.csv')
df.drop_duplicates(inplace=True)
df.to_csv('my_data_unique.csv', index=False)Cela lira le fichier CSV, supprimera tous les doublons, puis enregistrera les données uniques dans un nouveau fichier. Vous pouvez contrôler le comportement à l'aide de paramètres tels que subset (pour spécifier des colonnes) et keep ('first', 'last' ou False pour supprimer tous les doublons).
Utiliser la bibliothèque FuzzyWuzzy pour la correspondance floue
Dans certains cas, vous pouvez avoir des données qui ne sont pas exactement identiques mais très similaires. Par exemple, vous pouvez disposer d'une liste de noms présentant de légères variations d'orthographe ou de ponctuation. Dans ce cas, vous pouvez utiliser la bibliothèque FuzzyWuzzy pour la correspondance floue (fuzzy matching).
Voici un exemple :
utiliser la bibliothèque FuzzyWuzzy pour la correspondance floue dans une liste Python
from thefuzz import fuzz
my_list = ['John Smith', 'John Smithe', 'Jon Smyth', 'Jane Doe', 'Jan Doe']
unique_list = []
for name in my_list:
if not any(fuzz.ratio(name, x) > 80 for x in unique_list):
unique_list.append(name)
print(unique_list)Cela produira la sortie suivante :
['John Smith', 'Jane Doe']La bibliothèque FuzzyWuzzy utilise un algorithme de correspondance basé sur un ratio pour comparer des chaînes de caractères et trouver des correspondances proches. Dans cet exemple, nous ne conservons que les noms ayant un ratio de correspondance floue de 80 ou plus. Notez que fuzzywuzzy est déprécié ; thefuzz est la fourche activement maintenue et offre un remplacement direct.
Conclusion
La suppression des doublons est une tâche courante dans le traitement des données, et Python propose plusieurs méthodes pour y parvenir. En utilisant le type de données set, nous pouvons rapidement éliminer les doublons d'une liste. La méthode dict.fromkeys() permet de préserver l'ordre des éléments tout en supprimant les doublons. Si vous travaillez avec des données tabulaires, la bibliothèque Pandas offre un moyen pratique de supprimer les doublons des DataFrames. Enfin, pour les cas où les données ne sont pas exactes mais similaires, la bibliothèque FuzzyWuzzy peut être utilisée pour la correspondance floue.
En conclusion, en suivant ces différentes techniques, nous pouvons efficacement supprimer les doublons de nos données et améliorer la qualité et la précision de notre code. Il est important de considérer quelle méthode est la plus adaptée aux données avec lesquelles nous travaillons, et de toujours tester notre code pour garantir qu'il produit les résultats attendus.