본문 바로가기

파이썬 기초

[Python Pandas] 데이터 불러오기 Excel 파일

Python Pandas는 다음과 같은 다양한 형식의 데이터를 불러와서 데이터 프레임(DataFrame)에 저장할 수 있습니다.

  • Pickle - read_pickle()
  • CSV - read_csv()
  • Excel - read_excel(), ExcelWrite(), ExcelFile.parse()
  • JSON - read.json()
  • 클립보드 - read_clipboard()
  • HTML - read_html()
  • SQL - read_sql(), read_sql_table(), read_sql_query()

 

1. CSV 파일에서 데이터 불러오기

 

[Python Pandas] 데이터 불러오기 CSV 파일

Python Pandas는 다음과 같은 다양한 형식의 데이터를 불러와서 데이터 프레임(DataFrame)에 저장할 수 있습니다. Pickle - read_pickle() CSV - read_csv() Excel - read_excel(), ExcelWrite(), ExcelFile.parse..

digital-play.tistory.com

 

2. Excel 파일에서 데이터 불러오기

엑셀 파일의 sheet에 있는 데이터를 읽어와서 데이터 프레임에 불러오기 위해서는 pandas의 read_excel() 함수를 사용합니다.

pandas.read_excel(
    io,
    sheet_name=0,
    header=0,
    names=None,
    index_col=None,
    usecols=None,
    squeeze=False,
    dtype=None,
    engine=None,
    converters=None,
    true_values=None,
    false_values=None,
    skiprows=None,
    nrows=None,
    na_values=None,
    keep_default_na=True,
    verbose=False,
    parse_dates=False,
    date_parser=None,
    thousands=None,
    comment=None,
    skipfooter=0,
    convert_float=True,
    mangle_dupe_cols=True,
    **kwds,
)

자주 사용하는 주요 인수를 정리해보면 다음과 같습니다.

▪ io

 : 불러오기 할 파일 경로(웹상에 파일이 있을 경우에는 url)를 지정한다.

▪ sheet_name

 : Excel 파일에서 읽어올 sheet 명을 지정한다. 기본 설정 값은 0이며 별도로 지정하지 않으면 첫 번째 시트가 선택된다.

▪ header

 : 열(column) 이름으로 사용할 행을 지정한다. 기본 값은 0(정수)이기 때문에 별도로 지정하지 않으면 첫 행을 열의 이름으로 자동 지정된다.

▪ names

 : 열의 이름을 리스트 형태로 지정한다. 기본 값은 None이다.

▪ index_col

 : index로 사용할 열의 이름 또는 열의 번호를 지정한다. 생략하면 원본 데이터에 없는 0부터 시작하는 행 번호가 첫 번째 열에 추가된다.

▪ usecols

 : 파일에서 읽어올 데이터의 열을 선택할 수 있다. 기본 값은 None이며, 별도로 지정하지 않으면 전체 열이 선택된다. 데이터로 가져올 열을 지정하는 방법은 콤마(,) 또는 콜론(:)으로 지정할 수 있다.("B:H" 또는 "B, D, G:K")

 

 

실습을 위해 타이타닉 승객 정보가 있는 파일(titanic.xlsx)을 다운로드하여 실습할 소스 코드가 있는 폴더에 저장합니다.

tatanic excel 파일
titanic.xlsx
0.08MB

 

타이타닉 엑셀파일 설명

 

pandas 라이브러리를 사용하기 위해 pandas 라이브러리를 먼저 import 하고 read_excel() 메서드를 사용하여 엑셀(Excel) 파일로부터 데이터를 불러와서 데이터 프레임에 저장하여 봅시다.

read_excel()의 첫 번째 인수, io에는 불러오기 할 엑셀 파일의 경로 및 이름을 지정하고, 두 번째 인수, sheet_name에는 엑셀 파일의 sheet 이름을 지정합니다.

read_excel 예제 1

 

위의 예제에서 io은 생략 가능하며, sheet_name은 지정을 안 하면 기본값으로 첫 번째 시트(sheet)가 선택되기 때문에 생략하여도 실행 결과는 동일합니다

read_excel 예제 2 인수 생략 버전

 

저장한 데이터 프레임(df)을 확인해보면 다음과 같이 첫 번째 열에 인덱스 번호가 추가된 것 외에는 엑셀의 데이터가 그대로 저장된 것을 확인할 수 있습니다.

데이터 프레임 저장 결과

 

df.head() 또는 df.tail()을 이용하면 처음부터 5행만 또는 마지막 5행만 확인하는 것도 가능합니다. df.head() 또는 df.tail()의인수에 정수 값을 입력하면 원하는 행의 수를 지정할 수도 있습니다.

 

usecols 인수를 이용하여 엑셀 파일에서 원하는 열만 데이터 프레임에 저장하는 것도 가능합니다.

B열(Survived), D열(Name) 그리고 G열(SibSp)부터 K열(Cabin)까지만 선택하여 저장한다면 usecols='B, D, G:K'와 같이 추가하면 됩니다.

usecols 사용 예제

 

실행 결과는 다음과 같습니다.

usecols 사용 결과

 

 

데이터 프레임을 파일로 저장하는 방법

작업한 데이터를 파일로 저장하기 위해서 pandas는 다양한 방법을 제공하고 있습니다.

 

1. 피클(pickle)로 저장하기

피클(pickle)은 데이터를 바이너리 형태로 직렬화한 오브젝트(object)를 저장하는 방법입니다. 피클로 저장하면 스프레드 시트보다 더 작은 용량으로 데이터를 저장할 수 있어 속도가 빠르고 매우 편리합니다.

to_pickle() 메서드에 저장 경로를 문자열로 전달하면 됩니다.

pandas to_pickle 저장하기

 

피클 데이터는 바이너리 형태로 저장되기 때문에 용량이 적고 빠르게 저장할 수 있지만 일반 데이터 편집기로 보면 이상한 문자만 볼 수 있습니다. 그래서 피클 데이터는 반드시 read_picke() 메서드를 이용하여 읽어야 합니다.

pandas.read_pickle()

 

2. CSV 파일로 저장하기

데이터 프레임을 CSV 파일로 저장하기 위해서는 to_csv() 메서드를 사용하고 저장 경로 및 파일명을 인수로 전달하면 됩니다. 동일 폴더에 저장할 경우에는 파일명만 있으면 됩니다.

CSV 파일은 데이터를 쉼표(,)로 구분하여 저장하는데 이때 사용하는 것이 sep 인수입니다. sep 인수의 기본 값이 쉼표(')이기 때문에 생략하여도 결과는 동일합니다.

to_csv() 함수

 

3. 엑셀 파일로 저장하기

데이터 프레임은 엑셀 파일로 저장도 가능한지만 확장자에 따라 별도의 라이브러리가 필요합니다. xls 파일로 저장하려면 xlwt 라이브러리가 필요하고, xlsx 파일로 저장하려면 openplxl 라이브러리가 추가로 필요합니다.

사용하는 메서드는 to_excel()이고 저장 경로 및 파일명을 인수로 전달하면 됩니다.

파이썬 to_excel

 

라이브러리 설치 방법은 명령 프롬프트 열어서 다음과 같이 입력하면 됩니다.

pip install xlwt

pip install openpyxl

 

만약 주피터 노트북을 사용하고 있으면 code 셀에 '!' 추가 후 pip install openpyxl이라고 입력하여도 라이브러리가 정상적으로 설치됩니다.

 

pandas의 데이터 프레임에 대해서 추가적인 설명이 필요하면 아래 링크에 잘 정리되어 있습니다. 참조하세요.

https://digital-play.tistory.com/32

 

파이썬 Pandas 오늘은 DataFrame 제대로 이해하기

DataFrame 객체는 Pandas의 기본 구조체로 행과 열을 가지는 2차원 데이터 구조입니다. 열마다 다른 형태의 데이터를 가질 수 있으며 이전 포스팅에서 다루었던 1 차원 데이터인 Series 객체의 집합체 �

digital-play.tistory.com