본문 바로가기

카테고리 없음

[파이썬] pandas 데이터프레임을 엑셀로 저장하기, 기존 파일에 새 시트 추가하기: to_excel(), pd.ExcelWriter()

특정 웹 사이트에서 매일 스크래핑하는 데이터를 엑셀 파일 하나에 일자별로 저장하고 싶다면 어떻게 할 수 있을까요? 판다스에서는 pd.ExcelWriter()를 사용해서 기존 파일에 새 시트만 추가하여 저장하는 방법이 있습니다.

 

pd.ExcelWriter()를 사용해서 기존 파일에 새 시트 추가하여 저장하기

import pandas as pd
# 특정 파일이 해당 경로에 존재하는지 알아보기 위하여
# os.path.exists() 메서드를 사용하겠습니다.
import os

 

 

아래의 데이터프레임은 1일부터 3일까지의 인터넷 쇼핑몰의 과자 가격을 스크래핑한 가상의 데이터입니다.

# 샘플 데이터 생성
day1 = {'날짜': ['2020-01-01', '2020-01-01'], '상품명': ['홈런볼', '초코파이'], '가격': [1500, 3500]}
day2 = {'날짜': ['2020-01-02', '2020-01-02'], '상품명': ['홈런볼', '초코파이'], '가격': [1600, 3200]}
day3 = {'날짜': ['2020-01-03', '2020-01-03'], '상품명': ['홈런볼', '초코파이'], '가격': [1800, 3700]}

df1 = pd.DataFrame(day1)
df2 = pd.DataFrame(day2)
df3 = pd.DataFrame(day3)

 

다음은 새 시트를 추가하여 저장하는 코드입니다.

# 최초 생성 이후 mode는 append; 새로운 시트를 추가합니다.
if not os.path.exists('output.xlsx'):
    with pd.ExcelWriter('output.xlsx', mode='w', engine='openpyxl') as writer:
        df.to_excel(writer, index=False)
else:
    with pd.ExcelWriter('output.xlsx', mode='a', engine='openpyxl') as writer:
        df.to_excel(writer, index=False)

 

위 코드에서 df를 각 일자의 데이터프레임 이름에 맞게 df1, df2, df3으로 바꿔서 실행시켜보면, 결과값이 각각의 시트에 저장된 것을 볼 수 있습니다.

 

 

 

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