[pandas] 인코딩, 확인, 조회, 불러오기

2020. 2. 27. 11:20IT/Pandas : 데이터

 

파이썬으로 데이터 분석을 할 때 판다스라는 데이터 전용 라이브러리를 많이 사용합니다. 그런데 가끔씩 엑셀 데이터를 불러올 때 오류가 나는 경우가 있습니다. 주로 파일 자제 문제보다는 인코딩 문제가 많은데 해결 방법을 정리합니다.

 

사용 데이터 - 농수축산물 표준품목코드

url : https://tinyurl.com/sqldjy2

해당 사이트에 들어가면  농수축산물 표준품목코드를 받을 수 있습니다. 해당 파일을 MAC에서 열면 글자가 깨지는 것을 볼 수 있습니다.

해당 파일을 열면 글자가 깨집니다..

recipe = pd.read_csv(RECIPE_FILE)
recipe.head()

해당 파일을 판다스로 그냥 불러오면 오류가 납니다. 

  - 오류 메세지 : 'utf-8' codec can't decode byte 0xba in position 0: invalid start byte

 

그냥 불러오면 이렇게 오류가 납니다.

 

인코딩 확인 방법 - chardet

# 파일의 인코딩 확인
rawdata = open(RECIPE_FILE, 'rb').read()
result = chardet.detect(rawdata)
charenc = result['encoding']
charenc

해당 코드를 사용하여 인코딩 방식을 조회할 수 있습니다. 출력결과를 보면 'EUC-KR'으로 나옵니다. 

그래서 해당 파일은 'EUC-KR'으로 인코딩 되어 있다는 것을 알 수 있습니다.

 

 

그래도 오류 -  Error tokenizing data.

recipe = pd.read_csv(RECIPE_FILE, encoding=charenc)
recipe.head()

인코딩 형식을 알았다고 해서 바로 해결되는 것 아닙니다. 인코딩을 지정해줘도 아래와 같은 오류가 발생합니다. 

   - 오류 메세지 :  Error tokenizing data. C error: Expected 6 fields in line 5829, saw 8
 

 

에러는 무시 - error_bad_lines=False

recipe = pd.read_csv(RECIPE_FILE, encoding=charenc, error_bad_lines=False)
recipe.head()

인코딩 외에 'error_bad_lines=False'를써줘어야 합니다. 오류나는 부분을 무시하겠다는 의미입니다, 이렇게 실행하면 정상적으로 불러올 수 있습니다.

 

 

'IT > Pandas : 데이터' 카테고리의 다른 글

[Pandas] DataFrame  (0) 2019.09.16
[Pandas] 전처리  (0) 2019.09.16
[Pandas] plot 그래프  (0) 2019.09.16
[Pandas] merge 병합  (0) 2019.09.16
[Pandas] 데이터 형태  (0) 2019.09.16