공공데이터csv_한글깨짐현상_문제해결.md
pandas 공데이터 한글깨짐현상 문제해결
- 공공데이터 포털에서 다운로드 받은 csv파일을 pandas에서 로딩할 때 한글깨짐 현상을 해결하는 방법에 대하여 알아보겠습니다.
- 한글 깨짐 현상을 해결하기 전에 영어는 아무 문제가 없지만, 한글 파일을 읽어올 때는 종종 문제가 발생하게 됩니다.
- Encoding. 기본적인 이해
문자형 데이터는 컴퓨터가 인식을 하지 못하기 때문에 우리는 이것을 컴퓨터가 이해할 수 있도록 Bit 형태로 변형해야합니다.
1Byte = 8Bit
Ascii 계열의 문자열은 0~127까지 표현되기 때문에 1Byte 안에 충분히 표현될 수 있습니다. 하지만, 한글은 Ascii 안에 표현이 불가하기 때문에 표현하기 위해서는 Byte가 충분히 더 필요합니다.
인코딩은 한글과 같은 Ascii 범위를 벗어난 문자를 표현하기 위한 변형 작업이라고 이해하시면 쉽습니다. 하지만, 문제는 이러한 인코딩 방식이 여러가지 입니다.
- 공공데이터(csv) 파일의 encoding
공공데이터파일은 utf8 방식이면 좋겠으나, 아쉽게도(?) cp949 혹은 euc-kr 형식으로 인코딩이 되어 있습니다.
이러한 이유때문에 pandas에서 파일을 불러오면,,
- ‘utf8 codec can’t decode byte 0xb1 in position 0: invalid start byte’
라는 에러메세지가 발생하게 됩니다.
- 해결책1
- pandas에서 파일을 불러올 시, ‘engine=python’ 이라는 코드를 같이 작성하기
- df = pd.read_csv(‘test.csv’, engine=’python’)
- 불러오게 되면 작동은 하나 한글이 ???형식으로 나타나게 되기도 합니다.
- 해결책2
- pandas에서 파일을 불러올 시, ‘encoding=utf8’ 이라는 코드를 같이 작성하기
- df = pd.read_csv(‘test.csv’, encoding=’utf8’)
- 그러나 공공데이터의 경우 해결되지 않는 경우가 많습니다.
- 해결책3
- Excel에서 파일의 인코딩 옵션 변경하기
- 파일을 불러온 후, 다름이름 저장하기를 통해 고급옵션의 파일인코딩 형식을 utf8로 변경 후 저장하기
- 해결책4
해결책1번의 코드를 작성한 후, encoding=cp949 라는 코드를 통해 불러오기
(이렇게 해서 공공데이터 불러오기를 성공하였으나, utf8의 호환성이 가장 좋기에 utf8로 불러오는 것이 가장 좋다고 판단되어집니다.)
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.