Очищення даних у Python
Adel Nehme
VP of AI Curriculum, DataCamp

Мінімальна кількість кроків для переходу від одного рядка до іншого

Мінімальна кількість кроків для переходу від одного рядка до іншого


Поточна мінімальна відстань редагування: 2

Мінімальна відстань редагування: 5

| Алгоритм | Операції |
|---|---|
| Дамерау — Левенштейна | вставка, заміна, видалення, транспозиція |
| Левенштейна | вставка, заміна, видалення |
| Хеммінга | лише заміна |
| Відстань Яро | лише транспозиція |
| ... | ... |
Можливі пакети: nltk, thefuzz, textdistance ..
| Алгоритм | Операції |
|---|---|
| Дамерау — Левенштейна | вставка, заміна, видалення, транспозиція |
| Левенштейна | вставка, заміна, видалення |
| Хеммінга | лише заміна |
| Відстань Яро | лише транспозиція |
| ... | ... |
Можливі пакети: thefuzz
# Дозволяє порівнювати два рядки from thefuzz import fuzz# Порівняння reeding і reading fuzz.WRatio('Reeding', 'Reading')
86
# Часткове порівняння рядків
fuzz.WRatio('Houston Rockets', 'Rockets')
90
# Часткове порівняння з іншим порядком
fuzz.WRatio('Houston Rockets vs Los Angeles Lakers', 'Lakers vs Rockets')
86
# Імпортуємо process
from thefuzz import process
# Рядок та масив можливих збігів
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)]
Розділ 2
Використайте .replace(), щоб звести "eur" до "Europe"
А якщо варіацій надто багато?
"EU", "eur", "Europ", "Europa", "Erope", "Evropa"...
Схожість рядків!
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
# Для кожної правильної категорії for state in categories['state']:# Знайти потенційні збіги серед станів з помилками matches = process.extract(state, survey['state'], limit = survey.shape[0])# Для кожного потенційного збігу for potential_match in matches: # Якщо високий показник схожості if potential_match[1] >= 80:# Замінити помилковий варіант на правильну категорію survey.loc[survey['state'] == potential_match[0], 'state'] = state

Очищення даних у Python