본문 바로가기
코딩/데이터분석(Pandas, ML, etc)

판다스(Pandas)에서 엑셀, CSV 파일 불러오기 기초

by 나홀로코더 2021. 11. 20.
반응형

서론

 

판다스는 데이터프레임을 생성하는 다양한 함수를 내장하고 있다.

 

아마 그 가운데 가장 빈번하게 사용하는 것은 엑셀 파일이나 CSV 파일을 불러다 사용하는 방법일 것이다.

 

공공데이터포털에서 제공하는 자료 등 판다스 사용자가 분석하고자 하는 많은 데이터들이 엑셀 또는 CSV 파일 형식으로 되어 있다.

 

이 글에서는 엑셀과 CSV 파일을 판다스의 데이터프레임으로 불러오는 기초적인 방법을 소개한다.

 

본론

판다스에서 엑셀 파일을 불러오는 방법과 CSV 파일을 불러오는 방법은 많은 부분에서 동일하므로 같이 소개한다.

 

여기에 소개하는 내용과 앞으로 몇 개의 포스팅에 걸쳐 소개할 내용은 판다스 홈페이지의 API reference 페이지에서 더 상세하게 확인할 수 있다. 링크를 타고 가서 Input/Output 메뉴를 훑어보면 도움이 될 것이다.

 

엑셀 파일과 CSV 파일을 불러오는 기본적인 방법은 아래와 같다.

 

import pandas as pd
df = pd.read_csv("filename.csv")

 

read_csv 함수의 파라미터로 불러오려는 파일명을 넘겨준다.

 

엑셀파일인 경우에는 read_excel 함수를 사용하고, 파일명의 확장자도 xlsx나 xls 등 불러오려는 파일의 확장자를 써준다.

더보기

※ 첫 줄의 as pd 부분은 없어도 되고, pd를 다른 표현으로 바꿔도 된다.

    as pd를 안 쓰면 둘째 줄의 pd를 pandas로 바꾸면 되고,

    pd를 다른 표현으로 쓰면 둘째 줄의 pd도 그와 같은 표현으로 바꿔준다.

    둘째 줄의 df도 마찬가지로 본인의 마음에 드는 표현으로 바꿔도 된다.

    pd와 df는 각각 판다스와 데이터프레임을 나타내는 약어로, 판다스 사용자들 사이에서 널리 통용되는 표현일 뿐이다.

 

이것으로 끝이다. 이렇게만 하면 "filename.csv" 파일의 데이터가 데이터프레임으로 전환된다.

 

그런데 가끔 아래와 같은 에러가 날 수 있다. (구체적인 에러 메시지는 예시와 다를 수도 있다.)

 

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

 

인코딩에 관한 오류인데, 그럴 땐 아래와 같이 encoding 파라미터를 추가로 넘겨준다.

 

한글 데이터로 된 파일은 대부분 utf-8이나 cp949를 넣어주면 문제 없이 실행이 된다.

 

import pandas as pd
df = pd.read_csv("filename.csv", encoding="cp949")

 

파일이 불러와졌으면 head 함수를 사용해 데이터를 확인해보자.

 

df.head()

 

공공데이터포탈같이 데이터 분석에 용이한 포맷으로 제공해주는 곳에서 받은 데이터라면 괜찮겠지만, 회사에서 만든 엑셀 자료 등은 아래 그림과 같이 칼럼 이름으로 가야 할 행이 데이터 값으로 포함되는 경우가 많을 것이다.

 

업무용으로 만들어 놓은 데이터에는 여백이나 불필요한 행(주로 표 제목)이 있는 경우가 많기 때문이다.

 

그럴 때는 일단 데이터프레임으로 변환한 뒤에 데이터프레임을 변형하는 여러 함수를 사용해 다듬어도 되겠지만,

 

파일을 읽어올 때부터 헤더(칼럼 이름)로 사용할 행의 번호를 header 파라미터로 넘겨주면 된다.

import pandas as pd
df = pd.read_csv("filename.csv", encoding="cp949", header=3)

 

또는, 불러오지 않고 무시할 행의 개수를 skiprows 파라미터로 넘겨줘도 된다.

import pandas as pd
df = pd.read_csv("filename.csv", encoding="cp949", skiprows=3)

 

반응형

 

한편, 위의 예시를 보면 실제 데이터 값은 E열부터 시작하고 그 앞은 행 이름인 것을 볼 수 있는데, 이런 경우에는 index_col 파라미터를 추가로 넘겨준다.

 

index로 사용할 열이 하나인 경에는 숫자를 하나만 넘겨주면 되고, 여럿인 경우에는 리스트를 넘겨준다.

import pandas as pd
df = pd.read_csv("filename.csv", encoding="cp949", header=3, index_col=[0, 1, 2, 3])

 

마무리

이 정도만 알면 엑셀 파일이나 CSV 파일은 예쁘게 불러올 수 있게 되었을 것이다.

 

데이터의 일부만 불러오는 방법, 데이터 타입이나 포맷을 지정해 불러오는 방법 등 좀더 자세한 내용은 별도의 포스팅에서 다뤄보려고 한다.

반응형

댓글