본문 바로가기

카테고리 없음

[파이썬] pandas 여러 개의 엑셀 시트를 하나의 데이터프레임으로 결합하기: pd.read_excel()

이번에는 여러 개의 엑셀 시트를 하나의 데이터프레임으로 합치는 방법을 알아보겠습니다. 

 

샘플 데이터는 다음과 같이 생겼습니다. 온라인 소매 데이터로 세계 각국에서의 주문 기록이 담겨있습니다. 주문 국가에 따라 시트가 구분되어있으며 총 38개의 시트로 이루어졌습니다.

- 샘플 데이터는 UCI Machine Learning Repository에서 제공하는 Online Retail Data Set를 수정하였습니다.

 

 

위의 데이터를 아래와 같은 하나의 데이터프레임으로 결합하여 데이터 분석이 가능한 형태로 만드는 것이 목표입니다.

 

 

read_excel()

판다스에는 엑셀을 읽어오기 위한 메서드 read_excel()이 존재합니다. 사용하는 방법은 매우 간단합니다. 매개변수로 파일의 이름을 넣어주면 끝납니다. (단, 스크립트와 같은 폴더에 위치한 파일이 아니라면 경로까지 넣어주셔야합니다.)

import pandas as pd
excel_url = 'https://github.com/hogni-seoul/blog/raw/master/Online_Retail_Sample.xlsx'
df = pd.read_excel(excel_url)

별도의 다른 옵션을 설정하지 않는다면 가장 첫번째 시트를 데이터프레임으로 읽어옵니다.

 

read_excel() 읽어올 시트를 지정하기

특정 시트를 읽어오기

excel_url = 'https://github.com/hogni-seoul/blog/raw/master/Online_Retail_Sample.xlsx'
# 첫번째 시트를 읽어옵니다.
df1 = pd.read_excel(excel_url, sheet_name = 0)
# 두번째 시트를 읽어옵니다.
df2 = pd.read_excel(excel_url, sheet_name = 1)

하나의 시트만을 읽어올 경우 바로 데이터프레임을 반환합니다.

 

모든 시트를 읽어오기

excel_url = 'https://github.com/hogni-seoul/blog/raw/master/Online_Retail_Sample.xlsx'
# 모든 시트를 읽어옵니다
df_all = pd.read_excel(excel_url, sheet_name = None)

 

모든 시트를 읽어올 경우 collections.OrderedDict 객체를 반환합니다. key와 value 쌍으로 이루어져있으며, key 값을 이용해서 value 값을 얻어올 수 있습니다. 즉, 단일 데이터프레임 값을 가져올 수 있습니다.

df_all.keys()
# >>> odict_keys(['United Kingdom', 'France', ..., 'RSA'])
df_all['France']

 

 

모든 데이터프레임을 하나로 합치기 위해서는 concat() 메서를 사용하면됩니다. 인덱스는 필요 없으므로 무시하겠습니다. 결합된 데이터프레임을 반환합니다.

concatted_df = pd.concat(df_all, ignore_index=True)
concatted_df

 

 

 

-이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.