[캐글] Courses - Data Cleaning(3)
4. Character Encodings
5. Inconsistent Data Entry
4. Character Encodings
What are encodings?
- 문자 인코딩은 이진 바이트 문자열(예: 0110100001101001)에서 사람이 읽을 수 있는 텍스트(예: "hi")를 구성하는 문자로 매핑하기 위한 특정 규칙 집합
- 원래 작성된 것과 다른 인코딩으로 텍스트를 읽으려고 하면 "mojibake"라는 스크램블된 텍스트가 표시
- 주요 인코딩은 UTF-8
- UTF-8은 표준 텍스트 인코딩으로 모든 Python 코드는 UTF-8로 되어 있음
- 문자열을 UTF-8이 아닌 ASCII 코드로 처리하고 싶을 때 바이트 객체를 사용
encode()
메서드 : 문자열(str)을 바이트 객체로 바꿈
decode()
메서드 : 바이트 객체를 문자열(str)로 바꿈
- 주의사항
- 문자열 중 ASCII가 아니기 때문에 처리할 수 없는 문자가 있다면, 자동으로 교체
- 그런 다음 바이트를 다시 문자열로 변환할 때 해당 문자는 알 수 없는 문자로 대체되어 버림
Reading in files with encoding problems
UnicodeDecodeErro
에러 발생시 어떤 인코딩인지 알 수 없음
- 다양한 문자 인코딩을 시도하고 테스트하고 그 중 하나가 작동하는지 확인
chardet
모듈을 사용하여 올바른 인코딩이 무엇인지 자동으로 추측
ex) with open("../input/kickstarter-projects/ks-projects-201801.csv", 'rb') as rawdata: result = chardet.detect(rawdata.read(10000))
Saving your files with UTF-8 encoding
to_csv()
ex) kickstarter_2016.to_csv("ks-projects-201801-utf8.csv")
5. Inconsistent Data Entry
Do some preliminary text pre-processing
- 데이터 입력 불일치가 없는지 확인하기 위해 "국가" 열을 정리
countries = professors['Country'].unique()
countries.sort()
countries
- 모든 문자를 소문자 또는 대문자로 만들고 시작과 끝의 공백을 제거
- 대문자와 후행 공백의 불일치는 텍스트 데이터에서 매우 일반적
- 두 가지를 수정하면 텍스트 데이터 입력 불일치의 80%를 수정할 수 있음
.str.lower()
.str.strip()
Use fuzzy matching to correct inconsistent data entry
fuzzywuzzy
패키지를 사용하여 서로 가장 가까운 문자열을 식별
- Fuzzy matching
대상 문자열과 매우 유사한 텍스트 문자열을 자동으로 찾는 프로세스
일반적으로 문자열은 한 문자열을 다른 문자열로 변환하는 경우 변경해야 하는 문자 수가 적은 다른 문자열에 "가까운" 것으로 간주
scorer=fuzzywuzzy.fuzz.token_sort_ratio
Fuzzywuzzy는 두 개의 문자열이 주어진 비율을 반환
비율이 100에 가까울수록 두 문자열 사이의 편집 거리가 작아짐
4. Character Encodings
What are encodings?
- 문자 인코딩은 이진 바이트 문자열(예: 0110100001101001)에서 사람이 읽을 수 있는 텍스트(예: "hi")를 구성하는 문자로 매핑하기 위한 특정 규칙 집합
- 원래 작성된 것과 다른 인코딩으로 텍스트를 읽으려고 하면 "mojibake"라는 스크램블된 텍스트가 표시
- 주요 인코딩은 UTF-8
- UTF-8은 표준 텍스트 인코딩으로 모든 Python 코드는 UTF-8로 되어 있음
- 문자열을 UTF-8이 아닌 ASCII 코드로 처리하고 싶을 때 바이트 객체를 사용
encode()
메서드 : 문자열(str)을 바이트 객체로 바꿈
decode()
메서드 : 바이트 객체를 문자열(str)로 바꿈
- 주의사항
- 문자열 중 ASCII가 아니기 때문에 처리할 수 없는 문자가 있다면, 자동으로 교체
- 그런 다음 바이트를 다시 문자열로 변환할 때 해당 문자는 알 수 없는 문자로 대체되어 버림
Reading in files with encoding problems
UnicodeDecodeErro
에러 발생시 어떤 인코딩인지 알 수 없음
- 다양한 문자 인코딩을 시도하고 테스트하고 그 중 하나가 작동하는지 확인
chardet
모듈을 사용하여 올바른 인코딩이 무엇인지 자동으로 추측
ex) with open("../input/kickstarter-projects/ks-projects-201801.csv", 'rb') as rawdata: result = chardet.detect(rawdata.read(10000))
Saving your files with UTF-8 encoding
to_csv()
ex) kickstarter_2016.to_csv("ks-projects-201801-utf8.csv")
5. Inconsistent Data Entry
Do some preliminary text pre-processing
- 데이터 입력 불일치가 없는지 확인하기 위해 "국가" 열을 정리
countries = professors['Country'].unique()
countries.sort()
countries
- 모든 문자를 소문자 또는 대문자로 만들고 시작과 끝의 공백을 제거
- 대문자와 후행 공백의 불일치는 텍스트 데이터에서 매우 일반적
- 두 가지를 수정하면 텍스트 데이터 입력 불일치의 80%를 수정할 수 있음
.str.lower()
.str.strip()
Use fuzzy matching to correct inconsistent data entry
fuzzywuzzy
패키지를 사용하여 서로 가장 가까운 문자열을 식별
- Fuzzy matching
대상 문자열과 매우 유사한 텍스트 문자열을 자동으로 찾는 프로세스
일반적으로 문자열은 한 문자열을 다른 문자열로 변환하는 경우 변경해야 하는 문자 수가 적은 다른 문자열에 "가까운" 것으로 간주
scorer=fuzzywuzzy.fuzz.token_sort_ratio
Fuzzywuzzy는 두 개의 문자열이 주어진 비율을 반환
비율이 100에 가까울수록 두 문자열 사이의 편집 거리가 작아짐
encode()
메서드 : 문자열(str)을 바이트 객체로 바꿈decode()
메서드 : 바이트 객체를 문자열(str)로 바꿈- 문자열 중 ASCII가 아니기 때문에 처리할 수 없는 문자가 있다면, 자동으로 교체
- 그런 다음 바이트를 다시 문자열로 변환할 때 해당 문자는 알 수 없는 문자로 대체되어 버림
UnicodeDecodeErro
에러 발생시 어떤 인코딩인지 알 수 없음chardet
모듈을 사용하여 올바른 인코딩이 무엇인지 자동으로 추측ex)
with open("../input/kickstarter-projects/ks-projects-201801.csv", 'rb') as rawdata: result = chardet.detect(rawdata.read(10000))
to_csv()
ex)
kickstarter_2016.to_csv("ks-projects-201801-utf8.csv")
Do some preliminary text pre-processing
- 데이터 입력 불일치가 없는지 확인하기 위해 "국가" 열을 정리
countries = professors['Country'].unique()
countries.sort()
countries
- 모든 문자를 소문자 또는 대문자로 만들고 시작과 끝의 공백을 제거
- 대문자와 후행 공백의 불일치는 텍스트 데이터에서 매우 일반적
- 두 가지를 수정하면 텍스트 데이터 입력 불일치의 80%를 수정할 수 있음
.str.lower()
.str.strip()
Use fuzzy matching to correct inconsistent data entry
fuzzywuzzy
패키지를 사용하여 서로 가장 가까운 문자열을 식별- Fuzzy matching
대상 문자열과 매우 유사한 텍스트 문자열을 자동으로 찾는 프로세스
일반적으로 문자열은 한 문자열을 다른 문자열로 변환하는 경우 변경해야 하는 문자 수가 적은 다른 문자열에 "가까운" 것으로 간주 scorer=fuzzywuzzy.fuzz.token_sort_ratio
Fuzzywuzzy는 두 개의 문자열이 주어진 비율을 반환
비율이 100에 가까울수록 두 문자열 사이의 편집 거리가 작아짐
Author And Source
이 문제에 관하여([캐글] Courses - Data Cleaning(3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lhw8187/캐글-Courses-Data-Cleaning3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)