들어가며


이 글은 pandas 패키지를 사용해서

여러 엑셀 파일을 하나의 엑셀 파일로 병합하는 방법에 대하여

(역시나 제가 이해하기 쉽게)

정리한 글입니다.




아 그리구,

패스트 캠퍼스 강의도 참고하였습니다. ^^

https://fastcampus.co.kr/courses/213915



📕 실습 준비


✏️1. 실습파일 다운로드

https://drive.google.com/drive/folders/1YOQkzVYpKsT2MufI4gQxUPrVqPykWyOR?usp=share_link

구글드라이브에서 excel merge 폴더 다운 받은 후
주피터 노트북으로 실습파일.ipynb 열어서
실습 진행하시면 됩니다.


✏️2. 코드 숙지

1) glob 패키지

# 1) 해당 폴더에 있는 파일 가져오는 glob 패키지 
from glob import glob

# glob(path/+pattern)과 같은 형식으로 써주면
# 해당 path의 지정한 pattern에 해당하는 파일들의 경로를 리스트로 반환해준다.
# 아래 코드는 쥬피터 노트북과 같은 경로의 `data 폴더`에서 `확장자가 xls인 파일`을 가져오게 됩니다.
excel_files = glob('./data/*.xls')

실행 결과 :




2) tqdm 패키지

# 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)







👍 이럴 때 활용합시다. ^^
크롤링할 자료가 엄청 많을 경우에
중간에 에러로 인해 프로그램이 종료된다면
프로그램을 처음부터 다시 돌려야 합니다.
이런 불상사를 막기 위해서 보통은 백업 느낌으로
파일들을 분할해서 저장하게 됩니다.


크롤링이 끝난 후 분할 저장되어 있는 파일을 하나로 합칠 때 사용하면 좋을 듯 합니다.


profile
1.01^365

0개의 댓글