파이썬으로 데이터를 읽고, 저장할 때 주로 csv, excel, text 등의 파일 형태를 사용한다.
그리고 데이터는 여러 인코딩을 가지고 있는데,
그중에서도 보통 가장 많은 인코딩 유형은 'utf-8', 'euc-kr'이다.
1. UTF-8 (Unicode Transformation Format 8-bit)
- 현재 가장 널리 사용되는 문자 인코딩 방식 중 하나이며, 유니코드(Unicode)를 나타내기 위해 설계된 인코딩 방식
*유니코드: 전 세계 대부분의 문자와 기호를 포함하는 국제 표준 문자 집합
- 8비트 기반의 가변 길이 인코딩 방식으로 ASCII 문자(영어 알파벳 및 일부 특수 문자)는 1바이트로 표현하고, 문자의 경우 필요에 따라 2~4바이트까지 표현
- ASCII와 완벽하게 호환되므로, 기존의 ASCII 문자열은 UTF-8로 인코딩할 때 동일하게 유지됨
- 다양한 문자를 효율적으로 표현하기 때문에 많은 소프트웨어 및 시스템에서 기본 문자 인코딩 방식으로 선택됨
2. EUC-KR (Extended Unix Code-KR)
- 주로 한국어를 나타내기 위해 사용되는 문자 인코딩 방식
- 2바이트로 구성된 고정 길이 인코딩 방식으로 한글 음절, 한자 및 한글 자모 등을 포함하여 한국어의 문자 표현을 위해 설계됨
- 한국어에 최적화되어 있어 한글 문자를 상대적으로 작은 공간에 표현할 수 있음
그렇다면,
우리가 분석에 사용하는 데이터들은 어떤 인코딩 유형을 가지고 있는지 왜 확인을 해야 할까?
인코딩을 확인하는 것은 데이터의 일관성과 정확성 유지를 위해 매우 중요하다.
만일, 맞지 않은 인코딩 방식을 사용하게 된다면, 텍스트 데이터의 문자가 깨지거나 잘못된 형태로 표시될 수 있으며, 알파벳 문자 또한 완전히 다른 문자로 표시될 수 있다. 그리고 다른 시스템이나 플랫폼 간에 데이터를 교환할 때, 인코딩이 일치하지 않으면 데이터를 올바르고 일관성 있게 저장 및 처리할 수 없다.
즉, 올바른 인코딩 방식을 사용하여 텍스트 데이터의 정확성과 데이터의 교환 및 호환성을 보장해야 한다.
파이썬으로 데이터의 인코딩 확인하기
먼저, 인코딩 확인을 위해 'chardet' 라이브러리를 사용할 것이다.
chardet 패키지는 python에서 웹사이트 혹은 파일에서 문자열을 가져와서 인코딩을 인식한다.
아래 파이썬 코드의 자세한 설명은 다음과 같다.
1. with문 : 파일을 열고 사용한 후 자동으로 닫아준다. 파일 관리에 필요한 작업을 간편하게 처리
2. open(paths, 'rb') : open() 함수를 사용하여 파일을 열고, 바이너리(rb) 모드로 데이터를 연다. paths는 읽어오고자 하는 데이터 파일
3. file.read() : read() 메서드를 사용하여 파일의 내용을 읽어온다. 모든 데이터를 읽어온 후, raw_data 변수에 저장
4. chardet.detect(raw_data) : chardet 라이브러리의 detect() 함수를 사용하여 raw_data의 인코딩을 자동으로 감지한 후 result 변수에 저장
paths = 'data/전국도시공원표준데이터.csv'
# 인코딩 확인
import chardet
with open(paths, 'rb') as file:
raw_data = file.read()
result = chardet.detect(raw_data)
print('파일 인코딩:', result['encoding'])
상가업소 정보에 대한 파일 인코딩 결과는 'EUC-KR'이다.
해당 파일을 인코딩을 포함하여 pandas를 이용해 데이터를 출력해보자.
data_frames = pd.read_csv(paths, encoding = result['encoding'])
data_frames.head(2)
'분석가 Step 1. 데이터 분석 > Python' 카테고리의 다른 글
지오코딩(Geocoding), 역지오코딩(Geocoding-reverse) 편 (0) | 2023.07.07 |
---|---|
데이터 분석의 기초, 데이터 파악하기 (0) | 2023.06.29 |
특정 폴더 안의 특정 파일(목록) 반복해서 가져오기 (0) | 2023.03.16 |
특정 폴더 안의 파일(목록) 가져오기 (0) | 2023.03.16 |
다중인덱스/컬럼(Multi Index/Column) 편 (0) | 2023.03.16 |