인공지능 및 빅데이터

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

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

대표적인 인코딩

  • 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

충격! 코스피 8% 폭락에 SK텔레콤 AI 차단까지 – 한국의 AI 도박이 터졌다

코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…

2주 ago

당신 얼굴이 이미 쓰이고 있다… AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

3주 ago

당신 얼굴이 이미 쓰이고 있다 — AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

3주 ago

달러·원 환율 급등, 지금 당신이 꼭 알아야 할 것들

달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…

3주 ago

미래에셋·미래에셋벤처투자·미래에셋생명 동반 급등, 스페이스X와 무슨 관계?

미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.

3주 ago

스페이스X 상장 D-데이? 일론 머스크가 절대 말 안 하는 진짜 이유

스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…

3주 ago