[Pandas] csv 한글 깨짐 문제해결

반응형
    반응형

    공공데이터 같은 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으로 저장하고 한글 안 깨지는 걸 쓰시는 걸 추천합니다.

    1. csv를 메모장으로 엽니다.
    2. 다른 이름으로 저장을 클릭합니다
    3. 인코딩을 바꿔서 저장합니다.
      ANSI, CP949, Euc-KR 중 하나로 바꿔줍니다.
      파이썬으로 불러들일 예정이면 utf-8로 바꿉니다.

    1. 엑셀을 열어 한글이 깨졌는지 확인합니다.

     

    관련 포스팅

    [Python/Pandas] - [Pandas] CSV 저장,불러오기

    댓글

    Designed by JB FACTORY

    ....