[Pandas] csv 한글 깨짐 문제해결
- Python/기초
- 2022. 4. 22.
공공데이터 같은 api를 통해 데이터를 가져온 후 csv 를 저장했을 때 한글이 깨지는 상황이 발생합니다.
이건 컴퓨터 환경에 따라 약간씩 달라질 수도 있어서 윈도우 기준으로 설명하겠습니다. 아마 다른데는 잘 될 거에요 ㅎㅎ
파이썬에서 csv를 저장하면 인코딩에 대한 얘기를 하지 않으면 기본적으로 utf-8로 인식하고 저장합니다.
즉, 디폴트 값이 utf-8입니다.
그런데 utf-8로 csv를 저장하면 한글이 깨지는 문제가 발생합니다.
왜냐하면 특히 공공데이터인 경우는 cp949나 euc-kr 방식으로 인코딩이 되어 있기 때문입니다.
그래서 공공데이터에서 csv를 받아와 파이썬으로 불러들이면 당연히 한글이 깨지게 됩니다.
이를 해결하기 위해서는 cp949나 euc-kr로 바꿔주어야 합니다.
거꾸로 파이썬에서 저장해도 utf-8이면 엑셀에서 한글이 깨지는 현상이 발생합니다. 통일되지 않은 인코딩 덕분에 이런 현상이 생겨납니다.
인코딩 관점에서 본다면 공공데이터(cp949) -> 파이썬 api로 불러오기(cp949)-> csv로 저장(utf-8) -> 엑셀 실행(utf-8) 와 같은 프로세스를 가지기 때문에 중간에 변환없이 바뀌어버려서 한글 깨짐이 생기게 됩니다.
인코딩 자체를 바꾸던지 아니면 통일을 해주는 것이 해결할 수 있는 방법이 될겁니다. 인코딩 자체를 바꾸는 것보다 내가 맞춰주는 게 가장 편합니다.
csv를 저장하던 불러오던 encoding = 'cp949'으로 통일합니다.
import pandas as pd
# 파일 저장할 때(저장할 데이터프레임 df로 지정)
df.to_csv('파일이름',encoding='cp949')
# 파일 불러올때
pd.read_csv('파일이름',encoding='cp949')
이래도 안 된다면 윈도우에서 인코딩 업데이트가 되었는지 확인하고 문제가 없다면 엑셀에서 직접 인코딩을 다른 형식으로 바꾸어서 새로 저장해야 합니다.
파이썬에서 불러들일 때는 utf-8이므로 cp949라서 한글 깨짐이 일어나면 utf-8로 바꾸어 파이썬으로 불러옵니다.
CSV 인코딩 바꾸어 저장하기
아주 복잡합니다. 이 수준까지 가지 마시고 파이썬에서 여러 ecoding으로 저장하고 한글 안 깨지는 걸 쓰시는 걸 추천합니다.
- csv를 메모장으로 엽니다.
- 다른 이름으로 저장을 클릭합니다
- 인코딩을 바꿔서 저장합니다.
ANSI, CP949, Euc-KR 중 하나로 바꿔줍니다.
파이썬으로 불러들일 예정이면 utf-8로 바꿉니다.
- 엑셀을 열어 한글이 깨졌는지 확인합니다.
관련 포스팅
'Python > 기초' 카테고리의 다른 글
[Python] 리스트 각 원소 타입 바꾸기 (0) | 2022.04.30 |
---|---|
마크다운 사용방법(jupyter) (0) | 2022.04.29 |
[Python] 리스트 모든 원소 하나의 문자열로 변환하기 (0) | 2022.02.17 |
pip 직접설치하기 (0) | 2021.08.29 |
[Python] Generator(제너레이터) (0) | 2021.08.09 |