직장 생활을 하다 보면 매월 말일이나 연초마다 피할 수 없는 작업이 있습니다. 바로 ‘데이터 취합’입니다.
서울지사, 경기지사, 부산지사 등 각 현장에서 올라오는 ‘월간 방역 작업 일지’나 ‘매출 보고서’ 엑셀 파일을 하나의 마스터 시트로 합치는 작업은 그 자체로 고역입니다. 파일 50개를 일일이 열어서 복사하고, 맨 밑줄에 붙여넣고, 또 창을 닫는 과정을 반복하다 보면 마우스 쥔 손목이 시큰거리고 실수도 꼭 발생합니다.
오늘은 파이썬 업무 자동화의 ‘끝판왕’이자, 실무자들이 파이썬을 배우는 가장 큰 이유인 여러 개의 엑셀 파일을 단 1초 만에 하나로 병합(Merge)하는 방법을 알아보겠습니다.
1. 취합 자동화를 위한 비밀 무기: pandas와 glob
여러 파일을 하나로 합치기 위해서는 두 가지 도구가 필요합니다.
glob(글롭): 내 컴퓨터 폴더를 뒤져서.xlsx로 끝나는 엑셀 파일들의 이름과 경로만 쏙쏙 뽑아오는 탐지기 역할을 합니다. (파이썬 기본 내장)pandas(판다스): 데이터 분석 및 가공의 절대 강자입니다. 6편에서 배운openpyxl이 엑셀 서식이나 특정 셀을 다루는 데 특화되어 있다면,pandas는 수만 줄의 대용량 데이터를 통째로 복사해서 이어 붙이는 데 압도적인 성능을 자랑합니다.
2. 라이브러리 설치하기
VS Code 하단 터미널(Ctrl + )을 열고, 아래 명령어를 입력해 pandas를 설치해 줍니다. (openpyxl`은 6편에서 설치했으므로 생략해도 됩니다.)
Bash
pip install pandas openpyxl
gemini-code-1787926640387다운로드TERMINAL
PS C:\Users\SmartCodes> pip install pandas openpyxl
Collecting pandas
Downloading pandas-2.2.0-cp310-cp310-win_amd64.whl (11.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 38.4 MB/s eta 0:00:00
Collecting openpyxl
Downloading openpyxl-3.1.2-py2.py3-none-any.whl (249 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 250.0/250.0 kB 15.6 MB/s eta 0:00:00
Installing collected packages: pytz, tzdata, numpy, python-dateutil, openpyxl, pandas
Successfully installed numpy-1.26.4 openpyxl-3.1.2 pandas-2.2.0 python-dateutil-2.8.2 pytz-2024.1 tzdata-2024.1
PS C:\Users\SmartCodes>
- Alt 텍스트: VS Code 터미널 pandas 라이브러리 설치 화면
- 이미지 캡션: 데이터를 강력하게 다루기 위해 파이썬 데이터 분석의 핵심인 판다스(pandas)를 설치합니다.
3. 실전 예제: 폴더 안의 모든 작업 일지 하나로 합치기
C:\업무\월간보고서 라는 폴더 안에 지점별로 작성된 엑셀 파일(서울_작업일지.xlsx, 경기_작업일지.xlsx 등)이 30개 들어있다고 가정해 보겠습니다.
이 파일들을 모두 읽어와 하나의 마스터 파일로 합치는 파이썬 코드는 아래 10줄이 전부입니다.
Python
import pandas as pd
import glob
# 1. 취합할 엑셀 파일들이 모여있는 폴더 경로 지정
folder_path = r"C:\업무\월간보고서\*.xlsx"
# 2. glob을 이용해 해당 폴더의 모든 엑셀 파일 목록 가져오기
file_list = glob.glob(folder_path)
# 빈 리스트(그릇) 생성
all_data = []
# 3. for 반복문으로 파일 목록을 하나씩 순회하며 읽어오기
for file in file_list:
# 엑셀 파일 읽기 (pandas 활용)
df = pd.read_excel(file)
# 읽어온 데이터를 all_data 그릇에 담기
all_data.append(df)
# 4. 리스트에 담긴 수십 개의 데이터를 세로(행 방향)로 하나로 병합
merged_df = pd.concat(all_data, ignore_index=True)
# 5. 병합된 최종 데이터를 새로운 엑셀 파일로 저장
merged_df.to_excel(r"C:\업무\월간보고서\최종_통합본.xlsx", index=False)
print(f"총 {len(file_list)}개의 파일 병합이 완료되었습니다!")
- Alt 텍스트: 파이썬 코드로 자동 생성된 엑셀 파일 병합 통합본
- 이미지 캡션: 단 한 번의 실행으로 폴더 내의 모든 엑셀 파일이 하나로 완벽하게 병합됩니다.
4. 코드 핵심 원리 이해하기
4편에서 배운 리스트와 반복문, 그리고 판다스의 기능이 어떻게 결합되었는지 살펴봅니다.
r"C:\경로\*.xlsx": 문자열 앞의r은 폴더 경로의 역슬래시(\)를 에러 없이 읽게 해줍니다.*기호는 “이름이 무엇이든 상관없이.xlsx로 끝나는 모든 파일”을 뜻합니다.all_data.append(df): 각 지점의 엑셀 데이터를 표 형태(DataFrame)로 읽어온 뒤, 미리 만들어둔all_data라는 큰 바구니(리스트)에 차곡차곡 쌓아둡니다.pd.concat(): 바구니에 담긴 수십 개의 표를 위아래로 한 번에 이어 붙이는(병합) 마법의 명령어입니다.ignore_index=True를 넣어야 기존 파일들의 순번이 꼬이지 않고 1번부터 새롭게 매겨집니다..to_excel(): 메모리에서 하나로 합쳐진 거대한 표를 실제 엑셀 파일로 추출(저장)합니다.
이 스크립트 하나만 PC에 저장해 두면, 앞으로 매월 말일마다 마우스 클릭 한 번으로 야근 없는 칼퇴가 가능해집니다.
40대 직장인을 위한 실무 요약
- 파일 찾기 (
glob): 내 컴퓨터 안에서 조건에 맞는 파일 이름만 싹 긁어오는 탐색기 - 표 데이터 다루기 (
pandas): 대용량 엑셀 데이터를 눈 깜짝할 새에 처리하는 도구 - 합치기 (
pd.concat): 여러 엑셀 데이터를 위아래로 이어 붙여 마스터 시트 생성 - 추출하기 (
to_excel): 파이썬에서 가공이 끝난 데이터를 최종 엑셀 파일로 저장
자주 묻는 질문 (FAQ)
Q1. 지점마다 엑셀 파일의 열(머리글) 순서가 다르면 엉망으로 합쳐지지 않나요?
- A.
pandas의concat기능은 열의 위치가 아니라 ‘머리글 이름(Column Name)’을 기준으로 알아서 매칭하여 병합합니다. A열과 B열 순서가 바뀌어 있어도 이름만 같다면 같은 열에 정확히 합쳐지니 걱정하지 않으셔도 됩니다.
Q2. 엑셀(.xlsx)이 아니라 .csv 파일도 합칠 수 있나요?
- A. 네, 가능합니다. 코드에서 경로를
*.csv로 바꾸고, 읽을 때는pd.read_csv(file), 저장할 때는merged_df.to_csv("최종본.csv", index=False, encoding='utf-8-sig')로 수정하기만 하면 똑같이 동작합니다.
Q3. 여러 시트(Sheet) 중에서 특정 시트만 골라서 합칠 수 있나요?
- A. 파일을 읽어올 때 옵션을 주면 됩니다.
df = pd.read_excel(file, sheet_name="보고서")와 같이 작성하면, 여러 시트 중 ‘보고서’라는 이름을 가진 시트 데이터만 정확히 가져와 합칠 수 있습니다.
◀ Previous Step · 파이썬 독학기 6편
👈 6편: openpyxl로 실제 엑셀 파일 읽고 쓰기 자동화 다시보기▶ Next Step · 파이썬 독학기 8편
매일 반복되는 파일 첨부 보고는 그만! 취합된 엑셀 파일을 이메일로 자동 전송하는 비법
👉 8편: 엑셀 취합 파일 매일 정해진 시간에 자동 이메일 발송하기 보러가기 →