이 글은 pandas 패키지
를 사용해서
여러 엑셀 파일을 하나의 엑셀 파일로 병합하는 방법에 대하여
(역시나 제가 이해하기 쉽게)
정리한 글입니다.
아 그리구,
패스트 캠퍼스 강의도 참고하였습니다. ^^
https://fastcampus.co.kr/courses/213915
https://drive.google.com/drive/folders/1YOQkzVYpKsT2MufI4gQxUPrVqPykWyOR?usp=share_link
구글드라이브에서
excel merge 폴더 다운
받은 후
주피터 노트북으로실습파일.ipynb
열어서
실습 진행하시면 됩니다.
# 1) 해당 폴더에 있는 파일 가져오는 glob 패키지
from glob import glob
# glob(path/+pattern)과 같은 형식으로 써주면
# 해당 path의 지정한 pattern에 해당하는 파일들의 경로를 리스트로 반환해준다.
# 아래 코드는 쥬피터 노트북과 같은 경로의 `data 폴더`에서 `확장자가 xls인 파일`을 가져오게 됩니다.
excel_files = glob('./data/*.xls')
실행 결과 :
# 2) 반복문 진행사항을 출력해주는 tqdm 패키지
from tqdm.notebook import tqdm
import time
for i in tqdm(range(10)):
time.sleep(1)
실행 결과 :
그럼 이제 pandas 이용 엑셀 병합하는 코드
를 같이 살펴봅시다.
import pandas as pd
from glob import glob
from tqdm.notebook import tqdm
total = pd.DataFrame() # 반환용, 데이터 저장용도
excel_files = glob('./data/*.xls') # 반복문 돌리기 위해 전체 파일을 리스트에 담아 가져옴
for file in tqdm(excel_files):
temp = pd.read_excel(file,header=2) # i 번째 파일을 불러와서 임시로 보관
total = pd.concat([total,temp]) # temp를 반환용 DataFrame에 합쳐줌
# index 초기화
# drop = True 옵션을 준다면 원래 인덱스를 버린다.
total = total.reset_index(drop=True)
# 엑셀로 내보내는 코드
total.to_excel("전체주유소 가격.xlsx",index=False)
실행 결과 :
# 저장된 파일을 실제로 열어보면
pd.read_csv("./전체주유소 가격.xlsx", index=False)
👍 이럴 때 활용합시다. ^^
크롤링할 자료가 엄청 많을 경우에
중간에 에러로 인해 프로그램이 종료된다면
프로그램을 처음부터 다시 돌려야 합니다.
이런 불상사를 막기 위해서 보통은 백업 느낌으로
파일들을 분할해서 저장하게 됩니다.
크롤링이 끝난 후 분할 저장되어 있는 파일을 하나로 합칠 때 사용하면 좋을 듯 합니다.