Comparaison de chaînes de caractères

Nettoyage des données en Python

Adel Nehme

VP of AI Curriculum, DataCamp

Dans ce chapitre

 

 

 

 

 

 

Chapitre 4 - Couplage de données

Nettoyage des données en Python

Distance minimale d'édition

Le nombre minimal d'étapes nécessaires pour passer d'une chaîne à une autre

Nettoyage des données en Python

Distance minimale d'édition

Le nombre minimal d'étapes nécessaires pour passer d'une chaîne à une autre

Nettoyage des données en Python

Distance minimale d'édition

Nettoyage des données en Python

Distance minimale d'édition

Distance d'édition minimale jusqu'à présent : 2

Nettoyage des données en Python

Distance minimale d'édition

Distance minimale d’édition : 5

Nettoyage des données en Python

Distance minimale d'édition

 

Nettoyage des données en Python

Algorithmes de distance d'édition minimale

Algorithme Opérations
Damerau-Levenshtein insertion, remplacement, suppression, transposition
Levenshtein insertion, remplacement, suppression
Hamming substitution uniquement
Distance de Jaro transposition uniquement

 

Packages disponibles : nltk, thefuzz, textdistance

Nettoyage des données en Python

Algorithmes de distance d'édition minimale

Algorithme Opérations
Damerau-Levenshtein insertion, remplacement, suppression, transposition
Levenshtein insertion, remplacement, suppression
Hamming substitution uniquement
Distance de Jaro transposition uniquement

 

Packages disponibles : thefuzz

Nettoyage des données en Python

Comparaison simple de chaînes de caractères

# Lets us compare between two strings
from thefuzz import fuzz

# Compare reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
Nettoyage des données en Python

Chaînes partielles et différents ordres

# Partial string comparison
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Partial string comparison with different order
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
Nettoyage des données en Python

Comparaison avec les tableaux

# Import process
from thefuzz import process

# Define string and array of possible matches
string = "Houston Rockets vs Los Angeles Lakers"
choices = pd.Series(['Rockets vs Lakers', 'Lakers vs Rockets', 
                     'Houson vs Los Angeles', 'Heat vs Bulls'])

process.extract(string, choices, limit = 2)
[('Rockets vs Lakers', 86, 0), ('Lakers vs Rockets', 86, 1)]
Nettoyage des données en Python

Regroupement des catégories en fonction de la similitude des chaînes de caractères

Chapitre 2

Utilisez .replace() pour réduire "eur" en "Europe"

 

Que faire s'il existe un nombre excessif de variations ?

"EU", "eur", "Europ", "Europa", "Erope", "Evropa"

 

                                                                                                Similitude de chaînes !

Nettoyage des données en Python

Regroupement de catégories à l'aide de la correspondance de chaînes

print(survey['state'].unique())
id          state
0      California
1            Cali
2      Calefornia
3      Calefornie
4      Californie
5       Calfornia
6      Calefernia
7        New York
8   New York City
...
categories
  state
0 California
1 New York
Nettoyage des données en Python

Regroupement de tous les états

# For each correct category
for state in categories['state']:

# Find potential matches in states with typoes matches = process.extract(state, survey['state'], limit = survey.shape[0])
# For each potential match match for potential_match in matches: # If high similarity score if potential_match[1] >= 80:
# Replace typo with correct category survey.loc[survey['state'] == potential_match[0], 'state'] = state
Nettoyage des données en Python

Couplage de données

record linkage

Nettoyage des données en Python

Passons à la pratique !

Nettoyage des données en Python

Preparing Video For Download...