[캐글] Courses - Data Cleaning(3)

HO94·2021년 7월 18일
0

캐글

목록 보기
15/17

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에 가까울수록 두 문자열 사이의 편집 거리가 작아짐

0개의 댓글