Strings vergelijken

Data opschonen in Python

Adel Nehme

VP of AI Curriculum, DataCamp

In dit hoofdstuk

 

 

 

 

 

 

Hoofdstuk 4 - Record linkage

Data opschonen in Python

Minimale bewerkingsafstand

Minimaal aantal stappen om van de ene string naar de andere te gaan

Data opschonen in Python

Minimale bewerkingsafstand

Minimaal aantal stappen om van de ene string naar de andere te gaan

Data opschonen in Python

Minimale bewerkingsafstand

Data opschonen in Python

Minimale bewerkingsafstand

Huidige minimale bewerkingsafstand: 2

Data opschonen in Python

Minimale bewerkingsafstand

Minimale bewerkingsafstand: 5

Data opschonen in Python

Minimale bewerkingsafstand

 

Data opschonen in Python

Algoritmes voor minimale bewerkingsafstand

Algoritme Bewerking(en)
Damerau-Levenshtein invoeging, substitutie, verwijdering, transpositie
Levenshtein invoeging, substitutie, verwijdering
Hamming alleen substitutie
Jaro-afstand alleen transpositie
... ...

 

Mogelijke packages: nltk, thefuzz, textdistance ..

Data opschonen in Python

Algoritmes voor minimale bewerkingsafstand

Algoritme Bewerking(en)
Damerau-Levenshtein invoeging, substitutie, verwijdering, transpositie
Levenshtein invoeging, substitutie, verwijdering
Hamming alleen substitutie
Jaro-afstand alleen transpositie
... ...

 

Mogelijke packages: thefuzz

Data opschonen in Python

Eenvoudige stringvergelijking

# Lets us compare between two strings
from thefuzz import fuzz

# Compare reeding vs reading fuzz.WRatio('Reeding', 'Reading')
86
Data opschonen in Python

Gedeeltelijke strings en andere volgordes

# Gedeeltelijke stringvergelijking
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Gedeeltelijke stringvergelijking met andere volgorde
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
Data opschonen in Python

Vergelijken met arrays

# 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)]
Data opschonen in Python

Categorieën samenvoegen met stringsimilariteit

Hoofdstuk 2

Gebruik .replace() om "eur" te vervangen door "Europe"

 

Wat als er te veel varianten zijn?

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

 

                                                                                                Stringsimilariteit!

Data opschonen in Python

Categorieën samenvoegen met stringmatching

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
Data opschonen in Python

Alle staten samenvoegen

# Voor elke correcte categorie
for state in categories['state']:

# Zoek mogelijke matches in states met typfouten matches = process.extract(state, survey['state'], limit = survey.shape[0])
# Voor elke mogelijke match for potential_match in matches: # Als de similariteit hoog is if potential_match[1] >= 80:
# Vervang typefout door juiste categorie survey.loc[survey['state'] == potential_match[0], 'state'] = state
Data opschonen in Python

Record linkage

record linkage

Data opschonen in Python

Laten we oefenen!

Data opschonen in Python

Preparing Video For Download...