Pandas를 사용하여 동일한 워크북의 여러 워크시트에 pd.read_excel() 적용하기
이 글에서는 여러 워크시트를 포함하는 동일한 엑셀 워크북에서 데이터를 불러오는 방법에 대해 다룹니다. Pandas 라이브러리의 pd.read_excel()
함수를 사용하여 각 워크시트를 별도의 DataFrame으로 로드하거나 여러 워크시트를 하나의 DataFrame으로 결합하는 방법을 살펴보겠습니다.
필수 라이브러리
먼저 Pandas 라이브러리를 불러와야 합니다.
import pandas as pd
단일 워크시트 로드하기
특정 워크시트만 로드하려면 sheet_name
매개변수를 사용합니다. 워크시트 이름은 직접 입력하거나 워크시트 인덱스 번호를 사용하여 지정할 수 있습니다.
# 워크시트 이름으로 로드
df1 = pd.read_excel('myfile.xlsx', sheet_name='Sheet1')
# 워크시트 인덱스 번호로 로드 (0부터 시작)
df2 = pd.read_excel('myfile.xlsx', sheet_name=0)
여러 워크시트를 모두 로드하려면 sheet_name
매개변수를 리스트 형식으로 지정합니다. 워크시트 이름 또는 인덱스 번호를 리스트에 포함할 수 있습니다.
# 여러 워크시트 이름으로 로드
sheets = ['Sheet1', 'Sheet2', 'Sheet3']
dfs = [pd.read_excel('myfile.xlsx', sheet_name=sheet) for sheet in sheets]
# 워크시트 인덱스 번호 혼합 사용
sheets = [0, 2, 'Sheet3']
dfs = [pd.read_excel('myfile.xlsx', sheet_name=sheet) for sheet in sheets]
워크북의 모든 워크시트를 로드하려면 sheet_name=None
을 사용합니다. 이 경우 각 워크시트는 이름을 키로 하는 딕셔너리에 저장됩니다.
all_dfs = pd.read_excel('myfile.xlsx', sheet_name=None)
워크시트 결합하기
여러 워크시트를 하나의 DataFrame으로 결합하려면 append
메서드를 사용합니다.
# 각 워크시트를 별도의 DataFrame으로 로드
df1 = pd.read_excel('myfile.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('myfile.xlsx', sheet_name='Sheet2')
# 빈 DataFrame 생성
combined_df = pd.DataFrame()
# 각 워크시트 DataFrame을 결합
combined_df = combined_df.append(df1)
combined_df = combined_df.append(df2)
주의 사항
- 워크시트 이름에 공백이나 특수 문자가 포함된 경우 이름을 따옴표로 묶어야 합니다. 예:
pd.read_excel('myfile.xlsx', sheet_name="'Sheet Name'")
- 워크시트가 존재하지 않거나 잘못된 이름으로 지정되면 오류가 발생합니다.
- 여러 워크시트를 결합할 때 열 이름이 일치하는지 확인해야 합니다. 열 이름이 다르면 결합된 DataFrame에서 일부 열이 손실될 수 있습니다.
예제 코드
import pandas as pd
# 샘플 워크북 파일 이름
filename = 'myfile.xlsx'
# 워크시트 이름 리스트
sheets = ['Sheet1', 'Sheet2', 'Sheet3']
# 각 워크시트를 별도의 DataFrame으로 로드
dfs = [pd.read_excel(filename, sheet_name=sheet) for sheet in sheets]
# 모든 워크시트를 딕셔너리에 로드
all_dfs = pd.read_excel(filename, sheet_name=None)
# 워크시트 결합하기
combined_df = pd.DataFrame()
for df in dfs:
combined_df = combined_df.append(df)
# 결과 출력
print(dfs)
print(all_dfs)
print(combined_df)
설명
import pandas as pd
라인은 Pandas 라이브러리를 불러옵니다.filename
변수에는 샘플 워크북 파일 이름을 저장합니다.sheets
리스트에는 로드할 워크시트 이름을 저장합니다.dfs
리스트는pd.read_excel()
함수를 사용하여 각 워크시트를 DataFrame으로 로드하고 저장합니다.all_dfs
딕셔너리는pd.read_excel()
함수를 사용하여 모든 워크시트를 로드하고 워크시트 이름을 키로 저장합니다.combined_df
DataFrame은append
메서드를 사용하여 각 워크시트 DataFrame을 결합합니다.- 마지막으로
print
함수를 사용하여 각 결과를 콘솔에 출력합니다.
- 이 코드는 예시이며 실제 상황에 맞게 수정해야 할 수 있습니다.
- 워크시트 이름, 파일 이름 및 데이터 형식을 변경해야 할 수 있습니다.
- 오류가 발생하지 않도록 코드를 신중하게 테스트해야 합니다.
추가 정보
Pandas를 사용하여 동일한 워크북의 여러 워크시트에 pd.read_excel()
적용하기: 대체 방법
다음은 동일한 작업을 수행하는 대체 방법 몇 가지입니다.
openpyxl 라이브러리 사용
openpyxl
라이브러리는 엑셀 파일을 읽고 쓰는 기능을 제공합니다. 이 라이브러리를 사용하여 각 워크시트를 별도의 DataFrame으로 로드하거나 여러 워크시트를 하나의 DataFrame으로 결합할 수 있습니다.
import openpyxl
import pandas as pd
# 샘플 워크북 파일 이름
filename = 'myfile.xlsx'
# 워크북 로드
wb = openpyxl.load_workbook(filename)
# 각 워크시트를 DataFrame으로 로드
dfs = []
for sheet in wb.worksheets:
df = pd.DataFrame(sheet.values)
df.columns = sheet.title
dfs.append(df)
# 모든 워크시트를 딕셔너리에 로드
all_dfs = {}
for sheet in wb.worksheets:
df = pd.DataFrame(sheet.values)
df.columns = sheet.title
all_dfs[sheet.title] = df
# 워크시트 결합하기
combined_df = pd.DataFrame()
for df in dfs:
combined_df = combined_df.append(df)
# 결과 출력
print(dfs)
print(all_dfs)
print(combined_df)
openpyxl
및pandas
라이브러리를 불러옵니다.wb
변수에 워크북 객체를 로드합니다.dfs
리스트는wb.worksheets
루프를 통해 각 워크시트를 반복하고 셀 값을 DataFrame으로 변환하여 저장합니다.all_dfs
딕셔너리는 각 워크시트를 키-값 쌍으로 저장합니다.
xlrd 라이브러리 사용
xlrd
라이브러리는 엑셀 파일을 읽는 기능을 제공합니다. 이 라이브러리를 사용하여 각 워크시트를 별도의 DataFrame으로 로드할 수 있습니다.
import pandas as pd
import xlrd
# 샘플 워크북 파일 이름
filename = 'myfile.xlsx'
# 워크북 로드
wb = xlrd.open_workbook(filename)
# 각 워크시트를 DataFrame으로 로드
dfs = []
for sheet_name in wb.sheet_names():
sheet = wb.sheet_by_name(sheet_name)
df = pd.DataFrame(sheet.values)
df.columns = sheet.row_values(0) # 첫 번째 행을 열 이름으로 사용
dfs.append(df)
# 워크시트 결합하기 (앞서 설명한 방법 참조)
combined_df = pd.DataFrame()
for df in dfs:
combined_df = combined_df.append(df)
# 결과 출력
print(dfs)
print(combined_df)
pandas
및xlrd
라이브러리를 불러옵니다.- 첫 번째 행을 열 이름으로 사용합니다.
combined_df
DataFrame은
python excel pandas