빅데이터 처리를 위한 encoding 형식 확인 방법

이번 포스팅에서는 빅데이터 처리를 위한 encoding 형식 확인 방법에 대해서 알아보겠습니다. “encoding(인코딩)”은 데이터를 특정 형식이나 체계로 변환하는 과정을 의미합니다. 이 용어는 주로 문자나 숫자와 같은 데이터를 컴퓨터가 이해하고 처리할 수 있는 형태로 변환하는 데 사용됩니다.

데이터를 잘못 인코딩하거나 잘못 해석할 경우 정보 손실 또는 오류가 발생할 수 있기 때문에, 정확한 encoding 형식을 지정해 주어야 합니다.

빅데이터 메모리에 로드하기

기본적으로 파이썬에서 데이터 분석을 수행하려면, 분석하고자 하는 데이터를 메모리에 업로드해야 합니다.
한번, 아래 예시를 보겠습니다.

import pandas as pd

csvStream = pd.read_csv("D:/big_data/big_data.csv", sep = ',')
-----------------------------------------------------------------------------------------------
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 13: invalid start byte

정확한 인코딩 형식을 지정해 주지 않아, 발생한 에러입니다. 판다스에서 제공하는 read_csv 함수에서 encoding의 기본형식은 ‘utf-8’입니다. 에러가 발생한 걸로 추정컨데, 데이터의 encoding 형식이 ‘utf-8’이 아니라는 것을 알 수 있습니다.

그렇다면, 이 데이터의 encoding 형식을 어떻게 알 수 있을까요? 파이썬의 chardet 라이브러리에서 제공하는 detect 함수를 사용하면 알 수 있습니다.



chardet 라이브러리에서 제공하는 detect 함수 알아보기


chardet 라이브러리

chardet 라이브러리는 파이썬에서 사용되는 문자 인코딩 감지 도구입니다. 이 라이브러리는 주어진 바이너리 데이터의 문자 인코딩을 자동으로 감지하는 기능을 제공합니다. chardet 함수는 “character detection”의 줄임말이며, 이 라이브러리는 원래 Mozilla 프로젝트에서 사용되던 인코딩 감지 알고리즘을 기반으로 합니다.


detect 함수

detect 함수는 chardet 라이브러리의 핵심 기능 중 하나로, 바이트 시퀀스를 입력으로 받아 그 시퀀스의 가능한 문자 인코딩을 감지하고, 해당 인코딩의 신뢰도 점수와 함께 결과를 딕셔너리 형식으로 반환합니다.


encoding 형식 확인하기

그럼 위에서 설명한 chardet 라이브러리의 detect 함수를 사용하여 예제 데이터의 encoding 형식을 확인해 보겠습니다.

import chardet

# big_data.csv 파일을 열어 10만개의 데이터로 encoding 형식 확인하여 result 객체에 저장
with open('D:/big_data/big_data.csv', 'rb') as rawdata:
    result = chardet.detect(rawdata.read(100000))

# 문자 encoding 형식 확인하기 
print(result)
---------------------------------------------------------------------------------------
{'encoding': 'EUC-KR', 'confidence': 0.99, 'language': 'Korean'}

데이터 encoding 형식은 ‘EUC-KR’ 이고, 신뢰도는 99% 임을 확인할 수 있습니다. 그럼 encoding 형식을 ‘EUC-KR’로 지정하여 다시 메모리에 업로드 해보겠습니다.

import pandas as pd 
csvStream = pd.read_csv("D:/big_data/big_data.csv", sep = ',', encoding = 'EUC-KR')
--------------------------------------------------------------------------------------
ParserError: Error tokenizing data. C error: Expected 970 fields in line 1965, saw 972

빅데이터 처리를 위한 encoding 형식 확인 후 encoding 문제는 해결하였지만, ParserError가 발생했습니다. 다음 포스팅에서는 ParserError를 해결하는 방법에 대해서 알아보겠습니다.


감사합니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다