Python으로 데이터 정제하기
Adel Nehme
VP of AI Curriculum, DataCamp

한 문자열을 다른 문자열로 바꾸는 최소 단계 수

한 문자열을 다른 문자열로 바꾸는 최소 단계 수


현재 최소 편집 거리: 2

최소 편집 거리: 5

| 알고리즘 | 연산 |
|---|---|
| Damerau-Levenshtein | 삽입, 치환, 삭제, 전치 |
| Levenshtein | 삽입, 치환, 삭제 |
| Hamming | 치환만 |
| Jaro distance | 전치만 |
| ... | ... |
가능한 패키지: nltk, thefuzz, textdistance ..
| 알고리즘 | 연산 |
|---|---|
| Damerau-Levenshtein | 삽입, 치환, 삭제, 전치 |
| Levenshtein | _삽입_, _치환_, _삭제_ |
| Hamming | 치환만 |
| Jaro distance | 전치만 |
| ... | ... |
가능한 패키지: thefuzz
# 두 문자열을 비교합니다 from thefuzz import fuzz# reeding vs 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으로 데이터 정제하기