Pandas를 사용하여 엑셀 파일의 시트 목록 조회하기
본 해설에서는 엑셀 파일을 다루기 위해 다음 라이브러리를 사용합니다.
- openpyxl: 엑셀 파일 읽기 및 쓰기 기능 제공
- pandas: 데이터 분석 및 조작 기능 제공
코드 분석
import pandas as pd
import openpyxl
# 엑셀 파일 경로 지정
filepath = "C:/Users/username/Desktop/example.xlsx"
# openpyxl을 사용하여 엑셀 파일 열기
wb = openpyxl.load_workbook(filepath)
# 시트 목록 추출
sheet_names = wb.sheetnames
# 시트 목록 출력
print(sheet_names)
코드 설명
- 라이브러리 불러오기:
import pandas as pd
와import openpyxl
을 사용하여 필요한 라이브러리를 불러옵니다. - 엑셀 파일 경로 지정:
filepath
변수에 엑셀 파일의 경로를 저장합니다. - 엑셀 파일 열기:
openpyxl.load_workbook()
함수를 사용하여 엑셀 파일을 열고wb
변수에 저장합니다. - 시트 목록 추출:
wb.sheetnames
속성을 사용하여 엑셀 파일에 있는 모든 시트 이름의 리스트를sheet_names
변수에 저장합니다. - 시트 목록 출력:
print(sheet_names)
를 사용하여 시트 목록을 출력합니다.
참고:
- 엑셀 파일에 시트 이름이 한글로 되어 있는 경우,
sheet_names
리스트에서 정확히 한글 이름으로 표시되지 않을 수 있습니다. 이 경우,openpyxl.utils.get_sheet_name()
함수를 사용하여 시트 이름을 얻을 수 있습니다. - 특정 시트에 접근하려면
wb[sheet_name]
형태로 시트 이름을 사용하여 접근할 수 있습니다. 예를 들어, "Sheet1" 시트에 접근하려면wb["Sheet1"]
을 사용합니다.
활용 예시
- 특정 시트의 데이터를 Pandas DataFrame으로 변환하여 분석
- 시트 이름을 기반으로 시트별 작업 수행
- 엑셀 파일에 시트 추가, 삭제, 이름 변경
주의 사항
- 엑셀 파일을 열기 전에 파일이 닫혀 있는지 확인해야 합니다.
- 엑셀 파일을 수정한 후에는 반드시
wb.save()
함수를 사용하여 저장해야 합니다.
예제 코드: 특정 시트 데이터 Pandas DataFrame으로 변환 및 출력
import pandas as pd
import openpyxl
# 엑셀 파일 경로 지정
filepath = "C:/Users/username/Desktop/example.xlsx"
# openpyxl을 사용하여 엑셀 파일 열기
wb = openpyxl.load_workbook(filepath)
# 특정 시트 이름 지정
sheet_name = "Sheet1" # 원하는 시트 이름으로 변경
# 시트 데이터 Pandas DataFrame으로 변환
df = pd.read_excel(wb, sheet_name=sheet_name)
# DataFrame 출력
print(df)
- 이전 코드에서
sheet_names
변수에 저장된 시트 목록을 활용하여 특정 시트 이름을 지정합니다. pd.read_excel()
함수를 사용하여 특정 시트 데이터를 Pandas DataFrame으로 변환하고df
변수에 저장합니다.print(df)
를 사용하여 DataFrame을 출력합니다.
사용 방법
- 코드 편집:
filepath
변수를 엑셀 파일의 실제 경로로 변경합니다.sheet_name
변수를 원하는 시트 이름으로 변경합니다.
- 코드 실행:
- 결과 확인:
- 특정 시트의 데이터를 기반으로 추가 분석 또는 시각화 수행
- 특정 시트의 데이터를 다른 형식으로 변환 (CSV, JSON 등)
- 특정 시트의 데이터를 데이터베이스에 저장
sheet_name
변수에 지정된 시트 이름이 실제 엑셀 파일에 존재하는지 확인해야 합니다.- DataFrame이 출력될 때 터미널 또는 셀 너비가 데이터 열 너비보다 좁으면 일부 데이터가 잘릴 수 있습니다.
Pandas를 사용하여 엑셀 파일의 시트 목록 조회하기: 대체 방법
import pandas as pd
import openpyxl
# 엑셀 파일 경로 지정
filepath = "C:/Users/username/Desktop/example.xlsx"
# openpyxl을 사용하여 엑셀 파일 열기
wb = openpyxl.load_workbook(filepath)
# 시트 목록 추출
sheet_names = [sheet.title for sheet in wb.worksheets]
# 시트 목록 출력
print(sheet_names)
설명:
wb.worksheets
속성은 엑셀 파일에 있는 모든 시트 개체를 리스트 형태로 반환합니다.- 리스트 내 각 요소는
openpyxl.worksheet.Worksheet
객체이며,title
속성을 통해 시트 이름을 얻을 수 있습니다. - 리스트 표현식을 사용하여 각 시트 객체의
title
속성을 추출하여sheet_names
리스트에 저장합니다.
xlrd 라이브러리 사용
import pandas as pd
import xlrd
# 엑셀 파일 경로 지정
filepath = "C:/Users/username/Desktop/example.xlsx"
# xlrd를 사용하여 엑셀 파일 열기
wb = xlrd.open_workbook(filepath)
# 시트 목록 추출
sheet_names = wb.sheet_names()
# 시트 목록 출력
print(sheet_names)
xlrd
라이브러리는 엑셀 파일 읽기 기능을 제공합니다.
장점:
openpyxl
라이브러리보다 가볍고 빠른 속도로 작동합니다.- 메모리 사용량이 적습니다.
단점:
openpyxl
라이브러리만큼 다양한 기능을 제공하지 않습니다.- 엑셀 2007 이후 버전의 파일 형식을 지원하지 않습니다.
선택 기준:
- 엑셀 파일 크기가 크고, 처리 속도가 중요한 경우
xlrd
라이브러리를 사용하는 것이 좋습니다. - 엑셀 2007 이후 버전의 파일 형식을 처리하거나,
openpyxl
라이브러리가 제공하는 다양한 기능을 활용해야 하는 경우openpyxl
라이브러리를 사용하는 것이 좋습니다.
python excel pandas