특정 웹 사이트에서 매일 스크래핑하는 데이터를 엑셀 파일 하나에 일자별로 저장하고 싶다면 어떻게 할 수 있을까요? 판다스에서는 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)가 설치된 환경을 기준으로 작성되었습니다.