Python Pandas는 데이터 분석을 위한 강력한 라이브러리입니다. 소규모 데이터셋부터 대용량 데이터셋까지 손쉽게 읽어들이고, 필터링하며, 재구성할 수 있습니다. 또한 엑셀(Excel)을 포함한 다양한 형식으로 결과를 출력하는 기능도 제공합니다.
Pandas는 내부적으로 XlsxWriter 모듈을 사용하여 엑셀 파일을 작성합니다.
XlsxWriter란 무엇인가?
XlsxWriter는 XLSX 파일 형식으로 엑셀 파일을 생성하기 위한 Python 모듈입니다. 여러 개의 워크시트에 텍스트, 숫자, 수식 등을 기록할 수 있으며, 다음과 같은 다양한 기능을 지원합니다.
- 셀 서식 지정(Formatting)
- 이미지 삽입
- 차트 생성
- 페이지 설정
- 자동 필터
- 조건부 서식
기본 예제: 데이터프레임 위치 지정하여 저장하기
아래 예제는 네 개의 Pandas DataFrame을 하나의 워크시트에 서로 다른 위치에 배치하여 저장하는 방법을 보여줍니다. startrow와 startcol 옵션을 사용하면 원하는 셀 위치에 데이터를 자유롭게 배치할 수 있습니다.
# import pandas as pd
import pandas as pd
# 샘플 데이터로 Pandas DataFrame을 생성합니다.
df1 = pd.DataFrame({'Data': [11, 12, 13, 14]})
df2 = pd.DataFrame({'Data': [21, 22, 23, 24]})
df3 = pd.DataFrame({'Data': [31, 32, 33, 34]})
df4 = pd.DataFrame({'Data': [41, 42, 43, 44]})
# XlsxWriter를 엔진으로 사용하여 Pandas Excel writer 객체를 생성합니다.
writer = pd.ExcelWriter('pandas_positioning.xlsx', engine='xlsxwriter')
# 워크시트에 DataFrame을 작성하고 위치를 지정합니다.
# 기본 위치는 셀 A1입니다.
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet1', startcol=3)
df3.to_excel(writer, sheet_name='Sheet1', startrow=6)
# 헤더(header)와 인덱스(index) 없이 작성할 수도 있습니다.
df4.to_excel(writer, sheet_name='Sheet1', startrow=7, startcol=4,
header=False, index=False)
# writer 객체를 닫고 엑셀 파일을 최종 출력합니다.
writer.save()
주요 포인트 정리
- engine='xlsxwriter': Pandas의 ExcelWriter에서 XlsxWriter를 백엔드 엔진으로 지정합니다.
- startrow / startcol: 데이터프레임이 저장될 시작 행과 열의 위치를 지정합니다. 값은 0부터 시작합니다.
- header=False, index=False: 열 이름과 행 인덱스를 제외하고 순수한 데이터만 저장할 때 사용합니다.
- writer.save(): 모든 작업이 끝나면 반드시 호출해야 실제 엑셀 파일이 디스크에 저장됩니다.
참고로 Pandas 버전 1.0 이상에서는 writer.save() 대신 writer.close() 메서드를 사용하는 것이 권장됩니다. 두 방법 모두 동일하게 파일을 저장하고 리소스를 해제하는 역할을 합니다.