인공지능 및 빅데이터

텍스트 데이터 인코딩 (데이터 전처리)

데이터 전처리 — 텍스트 데이터 인코딩

대표적인 인코딩

  • ASCII
  • EUC-KR
  • CP949
  • UTF-8

ASCII

  • American Standard Code for Information Interchange
  • 0x00 ~ 0x7F (7bit, 128개, 알파벳과 문장부호)

ISO 8859

  • 0x00 ~ 0xFF (8bit, 256개, 알파벳과 다양한 기호와 문자)
  • 언어권에 따라 변형 – 서유럽용 ISO 9959-1 (Latin-1)을 가장 많이 사용

UTF-8 : 유니코드

  • Universal Coded Character Set + Transformation Format – 8-bit
  • 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나
  • 가장 널리 사용되는 표준

EUC-KR

  • EUC: Extend Unix Code
  • 영어를 제외한 문자를 표현하기 위한 확장부호
  • KS X 1001(KS C 5601 행망용)
  • 대표적인 한글 완성형 인코딩
  • 현대 한글 2,350자만 사용

CP949

  • Code Page 949
  • 마이크로소프트의 EUC-KR 확장 완성형 코드 (윈도 95부터 기본)
  • 현대 한글 11,172자 표현
  • 비표준 (국내에서 널리사용)

데이터 파일 다루기

master.csv

rss_30100041.xml

open('master.csv') # 윈도우에서 기본: encoding='cp949'
open('master.csv') # 리눅스에서 기본: encoding='UTF-8'

윈도우에서는 인코딩을 지정해주어야 합니다

lines = open('master.csv').readlines()

# UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 138: illegal multibyte sequence
lines = open('master.csv', encoding='utf-8').readlines()
lines[:10]

인코딩 감지

import chardet

contents = open('master.csv', 'rb').read()
chardet.detect(contents)
contents = open('rss_30100041.xml', 'rb').read()
chardet.detect(contents)

인코딩 변환

# 읽기
contents = open('master.csv', 'r', encoding='utf-8').read()

# 쓰기
open('master-euckr.csv', 'w', encoding='euc-kr').write(contents)
contents = open('master-euckr.csv', 'rb').read()
det = chardet.detect(contents)
det

인코딩 일괄 변환

import glob

for fn in glob.glob('*.csv'):
    contents = open(fn, 'rb').read()
    det = chardet.detect(contents)
    print(f"{fn} ({det['encoding']})")
import glob

for fn in glob.glob('*.csv'):
    # detect encoding
    contents = open(fn, 'rb').read()
    det = chardet.detect(contents)

    # convert encoding
    if str(det['encoding']).lower() == 'utf-8':
        text = open('master.csv', 'r', encoding='utf-8').read()
        open(fn.replace('.csv', '_euckr.csv'), 'w', encoding='euc-kr').write(text)

참고

엑셀에서 utf-8 CSV 읽기

윈도우 엑셀은 csv의 기본 인코딩을 cp949(EUC-KR)로 가정

Codepage 변경

C:\\>chcp 949     # 확장 EUC-KR
C:\\>chcp 65001  # 유니코드 8bit

요약

출처 : https://financedata.notion.site/8c858b09203e4404a3b0d1de426dc078

zerg96

Recent Posts

요양원 선택 전 반드시 확인해야 할 것들, 부모님 맡기기 전에 보세요

요양원 선택 전 반드시 확인해야 할 체크리스트를 공개합니다. 공식 평가 자료 조회법, 방문 시 확인…

2일 ago

공공기관 채용 비리, 내부에서 터져나온 충격 증언

공공기관 채용 비리의 실태와 피해 지원자의 대응법을 정리했습니다. 채용 비리 신고 방법, 공익신고자 보호제도, 취준생…

2일 ago

주식 손실 났을 때 세금 줄이는 방법, 아는 사람만 씁니다

주식 손실을 세금 절약에 활용하는 합법적 방법을 공개합니다. 해외주식 손익통산, ISA 계좌 활용, 연금계좌 절세까지…

2일 ago

음식 배달 늦으면 소비자가 취소할 수 있다, 몰랐던 권리

배달이 예상 시간보다 크게 늦으면 취소·환불을 요청할 수 있습니다. 배달앱별 지연 취소 방법과 잘못 배달됐을…

2일 ago

휴대폰 요금제 바꾸면 연 수십만원 절약, 지금 내 요금제 확인하세요

통신비 절약의 핵심은 요금제 최적화입니다. 내 데이터 사용량 확인법, 알뜰폰 전환 비교, 위약금 없이 요금제…

2일 ago

퇴직금 못 받았다면, 지금 당장 이렇게 하세요

퇴직 후 퇴직금을 받지 못했다면 즉시 노동부에 신고하세요. 지급 기한, 자격 요건, 신고 방법, 소액체당금…

2일 ago