
IT·디지털 자동화 블로그 · 파이썬 엑셀 업무 효율화
수백 개의 엑셀 파일을 한 번에 병합하는 파이썬 스크립트
왜 엑셀 병합 자동화인가
매일 또는 매주 각 부서·지점에서 제출되는 수십, 수백 개의 엑셀 파일을 수동으로 복사·붙여넣기 하는 일은 시간 낭비의 대표적인 예입니다. 파이썬을 사용하면 단 몇 줄의 코드로 모든 파일을 자동으로 읽고 병합할 수 있습니다. 특히 pandas 라이브러리는 시트별 데이터 처리와 정렬, 중복 제거까지 지원해 업무 속도를 획기적으로 높여줍니다.
환경 준비
가상환경을 설정하고 필요한 패키지를 설치합니다.
pip install pandas openpyxl
모든 파일은 같은 폴더에 모아두고 확장자는 `.xlsx` 형태로 통일하는 것이 좋습니다.
폴더 구조 준비하기
예를 들어 다음과 같은 폴더 구조를 가정합니다:
📂 excel_merge_project/
├── merge_script.py
├── 📂 data/
│ ├── sales_1.xlsx
│ ├── sales_2.xlsx
│ ├── sales_3.xlsx
│ └── ...
파이썬 병합 스크립트
pandas의 read_excel()과 concat() 함수를 이용해 모든 파일을 자동으로 병합합니다.
# file: merge_script.py
import pandas as pd
import os
# 1. 데이터 폴더 지정
folder_path = "data"
files = [f for f in os.listdir(folder_path) if f.endswith(".xlsx")]
all_data = []
# 2. 각 파일을 순차적으로 읽어 리스트에 저장
for f in files:
path = os.path.join(folder_path, f)
df = pd.read_excel(path)
df["source_file"] = f # 출처 파일명 기록
all_data.append(df)
# 3. 데이터 병합
merged = pd.concat(all_data, ignore_index=True)
# 4. 결과 출력
print(f"{len(files)}개 파일 병합 완료")
print(merged.head())
이렇게 하면 모든 파일의 데이터를 하나의 DataFrame으로 통합할 수 있습니다.
중복 제거와 데이터 정리
같은 데이터가 여러 파일에 존재할 수 있으므로 중복을 제거해줍니다.
# 중복 행 제거
merged = merged.drop_duplicates()
# 결측치 제거
merged = merged.dropna(how="all")
# 날짜 순 정렬
if "날짜" in merged.columns:
merged = merged.sort_values("날짜")
print("데이터 정리 완료")
결과 저장과 시트 분리
정리된 데이터를 새 파일에 저장하고, 필요 시 조건에 따라 시트를 나눌 수도 있습니다.
# file: save_results.py
output_path = "통합결과.xlsx"
with pd.ExcelWriter(output_path, engine="openpyxl") as writer:
merged.to_excel(writer, index=False, sheet_name="전체데이터")
# 특정 컬럼 기준 시트 분리
if "지역" in merged.columns:
for region, group in merged.groupby("지역"):
group.to_excel(writer, index=False, sheet_name=str(region))
print(f"결과 저장 완료 → {output_path}")
이 코드는 "전체데이터" 시트 외에도 지역별로 자동 분리된 시트를 추가 생성합니다.
자주 묻는 질문
파일 개수가 많을 때 느려지는 이유는?
read_excel()은 I/O 속도에 영향을 받습니다. SSD를 사용하고, 필요 없는 컬럼을 지정(usecols)하면 속도를 개선할 수 있습니다.
파일 확장자가 xls일 때는?
pandas의 read_excel()이 xls도 지원하지만, 파일 수가 많다면 미리 xlsx로 일괄 변환하는 것이 안전합니다.
CSV 파일도 병합할 수 있나요?
네. pd.read_csv()로 읽고 동일한 방식으로 pd.concat()을 사용하면 됩니다.
다음 글 예고: 자동 병합 후 보고서 요약 및 시각화
다음 편에서는 병합된 데이터를 자동으로 요약하고, matplotlib으로 월별 실적 차트를 생성하는 방법을 다룹니다.
관련 읽을거리: openpyxl 완벽 정리 · 엑셀 시트 자동 생성하기