본문 바로가기
Python

[ Python ] csv 파일을 불러와서 판다스 데이터프레임 생성하기

by teamnova 2022. 12. 29.

안녕하세요, 오늘은 csv 파일을 불러와서 판다스 데이터프레임을 생성해보겠습니다.

 

사용할 csv 파일은 공공데이터포털에서 다운로드 받은 '서울특별시 송파구_체육시설' 데이터 (csv파일) 를 사용하겠습니다.

 

pd.read_csv() 함수를 사용하면 csv, text 등의 형식의 파일들을 불러와서 데이터프레임으로 생성할 수 있습니다.

import pandas as pd

df = pd.read_csv('서울특별시 송파구_체육시설_20210916.csv')

 

하지만 위의 코드를 실행하면 다음과 같은 에러가 발생합니다.

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

 

이는 데이터 내에 한글이 포함되어 있어서 발생하는 문제입니다.

 

해결 방안은 인코딩을 'euc-kr' 또는 'cp-949'로 설정해주는 것입니다.

 

df1 = pd.read_csv('서울특별시 송파구_체육시설_20210916.csv', encoding='cp949')
df2 = pd.read_csv('서울특별시 송파구_체육시설_20210916.csv', encoding='euc-kr')

 

df1 은 'cp949'로 인코딩한 데이터프레임이며, df2는 'euc-kr'로 인코딩한 데이터프레임입니다.

 

두 데이터프레임 모두 정상적으로 출력되는 것을 확인할 수 있습니다.

 

 

그리고 'cp949'와 'euc-kr' 간에 어떤 차이가 있는지 알아보았습니다.

 

'CP949'는 마이크로소프트사가 도입한 코드페이지로, '확장 완성형' 또는 통합형 한글 코드라는 명칭으로 확장되어 현대의 모든 한글을 수용할 수 있다고 합니다. 

CP949 인코딩은 EUC-KR의 확장이며, 하위 호환성이 있습니다.

 

EUC-KR는 대표적인 한글 완성형 인코딩이며, 보통 '완성형'이라고 불립니다.

 

참고 사이트 :

https://ko.m.wikipedia.org/wiki/%EC%BD%94%EB%93%9C_%ED%8E%98%EC%9D%B4%EC%A7%80_949

 

코드 페이지 949 - 위키백과, 우리 모두의 백과사전

코드 페이지 949(CP949)는 마이크로소프트사가 도입한 코드 페이지이다. 본래는 KS C 5601의 완성형 한글을 표현한 코드 페이지였으나, 윈도 95부터는 확장 완성형 혹은 통합형 한글 코드(Unified Hangul C

ko.m.wikipedia.org

https://ko.m.wikipedia.org/wiki/EUC-KR

 

EUC-KR - 위키백과, 우리 모두의 백과사전

그림으로 나타낸 EUC-KR 인코딩의 구조

ko.m.wikipedia.org