본문으로 건너뛰기
실습하기

pandas와 openpyxl을 함께 활용하는 방법

지금까지 배운 pandasopenpyxl은 표 형식의 데이터를 다루는 상황에 특화되어 있습니다.

pandas는 대용량 데이터를 처리하고 분석하는 데 탁월하며, openpyxl은 엑셀 파일의 서식을 세밀하게 조정할 수 있습니다.

이번 수업에서는 이 두 가지 라이브러리를 함께 사용해 엑셀 파일을 다루는 방법을 알아보겠습니다.


pandas와 openpyxl 함께 활용하기

다음 코드 예시는 pandas로 데이터를 처리한 후 openpyxl을 사용해 엑셀 파일에 데이터를 저장하고, 추가적인 서식을 적용하는 예제입니다.

pandas와 openpyxl을 활용한 데이터 처리 및 엑셀 서식 지정
import pandas as pd
from openpyxl import load_workbook

# pandas DataFrame 생성
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]
})

# pandas를 사용해 엑셀 파일로 저장 (ExcelWriter를 사용해 파일을 만듦)
file_name = 'output_file.xlsx'

with pd.ExcelWriter(file_name, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='Sheet1')

# openpyxl을 사용하여 추가 수정 작업
wb = load_workbook(file_name) # 엑셀 파일 불러오기
ws = wb['Sheet1'] # 수정할 시트 선택

# 예를 들어, A1 셀에 새로운 값을 추가
ws['A1'] = 'Updated Name'

# 엑셀 파일 저장
wb.save(file_name)

print("작업을 완료했습니다")

위 코드는 다음과 같은 순서로 동작합니다.


코드 상세 설명

1. Pandas로 DataFrame 생성

pandas DataFrame 생성
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35]
})
  • pandas 라이브러리를 사용해 DataFrame을 생성합니다.

  • NameAge라는 두 개의 열이 있으며, 각 열에 이름과 나이 데이터를 저장합니다.


2. pandas를 사용해 엑셀 파일로 저장

pandas를 사용해 엑셀 파일로 저장
file_name = 'output_file.xlsx'
with pd.ExcelWriter(file_name, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='Sheet1')
  • ExcelWriter를 사용해 DataFrame을 엑셀 파일로 저장합니다.

  • file_name은 엑셀 파일의 이름으로, output_file.xlsx로 설정됩니다.

  • engine='openpyxl': 엑셀 파일 처리를 위한 엔진으로 openpyxl을 사용합니다.

  • to_excel() 메소드는 DataFrame을 엑셀 파일로 변환하는 역할을 합니다.

  • index=False: 인덱스를 제외하고 저장합니다.

  • sheet_name='Sheet1': 엑셀 파일에서 데이터를 저장할 시트 이름을 "Sheet1"로 설정합니다.


3. openpyxl로 엑셀 파일 열기 및 시트 선택

openpyxl을 사용하여 추가 수정 작업
wb = load_workbook(file_name)  # 엑셀 파일 불러오기
ws = wb['Sheet1'] # 수정할 시트 선택
  • openpyxlload_workbook() 메소드를 사용하여 앞서 생성한 엑셀 파일 (output_file.xlsx)을 불러옵니다.

  • wb는 엑셀 파일을 참조하는 Workbook 객체입니다.

  • ws = wb['Sheet1']는 Sheet1 시트를 불러와서 선택합니다.

  • ws는 선택된 시트를 참조하는 Worksheet 객체입니다.


4. 셀 값 수정

A1 셀에 새로운 값을 추가
ws['A1'] = 'Updated Name'
  • ws['A1']은 시트에서 A1 셀을 가리킵니다.

  • A1 셀의 값을 'Updated Name'으로 변경합니다.

  • 원래 A1 셀에 저장되어 있던 값(예: 'Name')을 이 코드로 덮어씁니다.


5. 엑셀 파일 저장

wb.save()를 사용해 엑셀 파일 저장
wb.save(file_name)
  • save() 메소드를 사용하여 수정된 엑셀 파일을 저장합니다.

  • file_name에 해당하는 'output_file.xlsx' 파일에 반영된 내용을 저장합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!