빅데이터 분석기사[python]/pandas와 기본 데이터 처리

[python 파이썬, pandas 판다스] csv 및 excel 파일 불러오기 (한글 깨지는 경우 해결)

sunning 2022. 5. 9. 23:17
728x90
반응형

파이썬에서 pandas로 csv나 xlsx 형태의 데이터를 불러올 수 있다.

 

그 방법은 아래와 같다. (물론 import pandas as pd를 먼저 수행해야 하며 파일주소에 파일명, 확장자가 정확히 위치해야한다. 파일주소를 치기 귀찮다면 데이터 파일을 코드 파일과 같은 폴더에 위치시키면 파일 주소를 생략하고 파일명만 입력해도 된다.)

  • csv 파일 불러오기 : pd.read_csv('파일주소/파일명.csv')
  • xls/xlsx 파일 불러오기 : pd.read_excel('파일주소/파일명.xlsx')

예시로 kaggle에서 다운로드한 'IRIS.csv'라는 이름을 가진 csv 파일을 한 번 불러와보자.

DF = pd.read_csv('IRIS.csv') ## 코드 파일과 csv 파일이 같은 폴더에 위치하면 파일주소 생략 가능
DF

위의 데이터는 운좋게 오류가 발생하지 않았지만, 한글로 이루어진 파일의 경우 read_csv를 사용할 때 종종 아래와 같은 오류가 발생한다.

 

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 0: invalid start byte
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 2: invalid start byte

 

 

이는 데이터의 Encoding이 'utf-8'로 통일되지 않고 cp949나 euc-kr 방식으로 인코딩 되어 있기 때문으로 위 경우 해결책은 아래와 같다.

1. engine = 'python'

DF = pd.read_csv('IRIS.csv', engine = 'python')
DF

 

이렇게 파일명 뒤에 engine = 'python'을 붙여주면 거의 왠만한 파일은 다 열린다. 이 방법을 안 뒤로부터는 그냥 사전 오류 방지 차원에서 read_csv 뒤엔 항상 엔진 파이썬을 붙여준다. 하지만 오류가 안난다고 해서 모든 한글이 제대로 나타나는 건 아니다. 한글대신 이상한 물음표 등 특수문자로 열리는 경우가 많다. 그때는 다음 해결책으로 넘어가자.

 

2. encoding='utf-8'

DF = pd.read_csv('IRIS.csv', encoding = 'utf-8')
DF

 

3. encoding='euc-kr'

DF = pd.read_csv('IRIS.csv', encoding = 'euc-kr')
DF

 

2번과 3번은 인코딩 옵션을 utf-8이나 euc-kr 방식으로 맞춰주는 것이다. 1번에서도 해결되지 않는 글자가 깨지는 경우는 인코딩 옵션을 맞춰주면 대부분 오류가 해결될 것이다.

 

3가지 해결책으로도 오류가 해결되지 않는다면 csv파일이나 xlsx파일 자체를 새로 저장해보는 방법이 있을 것이다.

728x90
반응형