"Life is too short, You need python"
Pandas에서 read_excel, read_csv 등 데이터를 읽어올 경우 간혹 발생하는 오류로 utf-8 방식으로는 디코딩을 할 수 없다는 의미입니다. 외부에서 모듈을 가져와 사용하는 경우 종종 발생하는 오류입니다.
에러 ( Error ) 소개
UnicodeDecodeError:
파이썬은 file open시 별도 encoding argument를 주지 않을 경우 default로 'utf-8'을 이용해 decoding을 시도 합니다.
해당 파일이 utf-8로 encoding된 파일이 아닐 경우 발생하는 오류입니다.
'utf-8' codec can't decode byte 0xe9 in position 718: invalid continuation byte
718번째에 있는 바이트가 0xe9 바이트이고 해당 바이트를 'utf-8' 방식으로 디코딩 할 수 없다는 의미입니다.
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 718: invalid continuation byte
결국 'utf-8'이 아닌 다른 방법으로 디코딩을 해야 합니다. 아래 소개 드리는 2가지 방법을 사용하신다면 에러가 발생하지 않고 정상 동작하는 것을 알 수 있습니다.
Solution 1. 'cp949'를 사용
read Option으로 encoding = 'cp949'를 사용하는 방법이 있습니다.
import pandas as pd
file_path = 'd:/pylife/pandas/sales.csv'
df = pd.read_csv('file_path', encoding='cp949')
Solution 2. 'euc-kr'을 사용
read Option으로 encoding = 'euc-kr'을 사용하는 방법이 있습니다.
import pandas as pd
file_path = 'd:/pylife/pandas/sales.csv'
df = pd.read_csv('file_path', encoding='euc-kr')
마무리
사실 한글 encoding 방식은 (웬만하면) utf-8과 euc-kr 둘 중 하나입니다.
utf-8이 안된다면 euc-kr로 디코딩을 진행할 수 있습니다. 만약 euc-kr 방식으로 문제가 해결되지 않는다면 CP949로 인코딩 하시길 권장 드립니다.
* UTF(UCS Transformation Format) : 변환 인코딩 방식
* euc-kr(KS X 1001과 KS X 1003) 표준안의 인코딩 방식(2,350자 표현)
* CP949(MS949, x-window-949) : 확장 완성형의 인코딩 방식(11,172자 표현)
(참고) 한글 인코딩의 역사와 유니코드 : https://d2.naver.com/helloworld/19187