개발/Python

[Python] 파이썬으로 엑셀 파일 한 번에 정리하기

일요일좋아하는사람 2025. 4. 20. 18:05
728x90
반응형

파이썬과 엑셀

들어가며

엑셀은 여전히 많은 업무 자동화의 중심에 있습니다. 수작업으로 반복하는 엑셀 정리는 시간이 많이 소요될 뿐 아니라 실수도 발생하기 쉽습니다. 본 문서에서는 파이썬을 이용해 엑셀 파일을 자동으로 정리하는 실전 예제를 통해 업무 시간을 획기적으로 단축하는 방법을 소개합니다.

왜 파이썬으로 엑셀 정리를 해야 할까?

기업이나 개인 업무에서 Excel은 보고서 작성, 데이터 정리, 고객 관리, 회계 등 다양한 목적에 사용됩니다. 하지만 일정 규모 이상의 데이터를 다루게 되면 사람이 일일이 열어보고 정리하는 작업은 너무 비효율적입니다.

예를 들어 아래와 같은 경우에는 자동화가 필수입니다:

  • 매일 또는 주기적으로 들어오는 새로운 데이터 정리
  • 대량의 엑셀 파일을 하나로 통합하거나 공통된 방식으로 정제
  • 비정형적으로 입력된 데이터를 표준화할 필요가 있는 경우
  • 실수가 허용되지 않는 고객 정보, 회계 정산 등의 업무 처리

어떤 상황에서 필요한가요?

  • 고객 DB를 정리할 때 전화번호나 주소 등의 입력값이 제각각인 경우
  • 마케팅 데이터를 수집했는데 날짜 형식이 달라 통계가 안 나올 때
  • 엑셀 양식이 각 부서마다 다르고 이를 하나의 형태로 맞춰야 할 때
  • 반복적인 형식의 엑셀 보고서에서 요약 정보만 뽑고 싶을 때

장점

  • 시간 절약: 반복 작업을 자동으로 처리할 수 있어 수십 분에서 수 시간이 절약됩니다.
  • 정확도 향상: 수작업에서 발생할 수 있는 실수 방지
  • 유연성: 엑셀 서식이 변경되더라도 코드로 빠르게 대응 가능
  • 자동화 연계: 이메일 전송, 서버 업로드, 알림 등과 연계 가능

단점 또는 고려사항

  • 초기 진입 장벽: 파이썬 문법이나 라이브러리 사용법을 익혀야 합니다
  • 유지 관리 필요: 엑셀 형식이 바뀌면 코드도 일부 수정이 필요할 수 있음
  • 권한 문제: 보안 상 클라우드에서 엑셀을 다루는 경우 계정 접근이나 파일 열람 이슈
  • 복잡한 서식 대응의 한계: 조건부 서식, 병합셀 등은 별도 처리 로직이 필요함

하지만 이러한 단점도 한 번만 코드를 짜 놓으면 반복적으로 큰 효과를 낼 수 있다는 점에서 충분히 상쇄됩니다.


1. 환경 준비하기

1.1 파이썬 설치

  • Python 3.8 이상 권장
  • python.org에서 다운로드 가능

1.2 필요한 라이브러리 설치

pip install openpyxl pandas xlrd xlsxwriter

1.3 기본 파일 구조 만들기

project/
├── data/
│   ├── input.xlsx
├── output/
├── scripts/
│   └── cleanup_excel.py

2. 목표: 이런 엑셀 데이터를 자동 정리하고 싶다!

원본 예시 (input.xlsx)

이름 나이 지역 전화번호 등록일자

김보라 29 서울 010-1111 2022.01.05 09:00
홍길동 NULL 경기 - 2022.02.11 10:12
최준호 34 NaN 010-2222 2021.12.31 14:22

원하는 정리 결과

  • 공백(NULL, NaN, -) 제거
  • 전화번호 통일화 (예: 010-XXXX-XXXX)
  • 등록일자 포맷 정리 (예: 2022-01-05)

3. 실전 코드 작성하기

3.1 엑셀 읽어오기

import pandas as pd

file_path = '../data/input.xlsx'
df = pd.read_excel(file_path)
print(df.head())

3.2 결측치 처리하기

# NaN과 NULL, '-' 모두 처리
na_values = ['NULL', 'NaN', '-', None]
df.replace(na_values, pd.NA, inplace=True)
df = df.dropna(subset=['이름', '나이', '전화번호'])

3.3 전화번호 형식 맞추기

def format_phone(phone):
    if pd.isna(phone): return ''
    digits = ''.join(filter(str.isdigit, str(phone)))
    if len(digits) == 11:
        return f'{digits[:3]}-{digits[3:7]}-{digits[7:]}'
    return phone

df['전화번호'] = df['전화번호'].apply(format_phone)

3.4 날짜 포맷 정리하기

from datetime import datetime

def format_date(x):
    try:
        return pd.to_datetime(x).strftime('%Y-%m-%d')
    except:
        return ''

df['등록일자'] = df['등록일자'].apply(format_date)

4. 정리된 결과 저장하기

output_path = '../output/cleaned.xlsx'
df.to_excel(output_path, index=False)

5. 추가 팁: 반복 처리 자동화

5.1 여러 개의 엑셀 파일 자동 정리

import os

data_dir = '../data'
for fname in os.listdir(data_dir):
    if fname.endswith('.xlsx'):
        path = os.path.join(data_dir, fname)
        df = pd.read_excel(path)
        # 정리 코드 재사용
        ...
        df.to_excel(f'../output/cleaned_{fname}', index=False)

5.2 매일 아침 자동으로 실행 (Windows 기준)

  • cleanup_excel.py를 작성 후
  • 작업 스케줄러(Task Scheduler)에 등록

6. 실무 활용 예제들

📚 고객 DB 정리

  • 전화번호 통일화, 지역 분류 자동화

📈 마케팅 리포트용 데이터 정제

  • 결측치 제거, 날짜 포맷 맞춤, 요약 통계 추가

🧾 회계 엑셀 통합 정리

  • 여러 시트 통합, 특정 항목 정렬

7. 정리하며

이제 엑셀을 열고 수작업으로 정리하던 시간은 끝났습니다. 파이썬을 이용해 반복 작업을 자동화함으로써, 더 중요한 일에 집중할 수 있습니다.

파이썬 자동화는 단순한 "스크립트" 수준이 아니라, 실제 업무 생산성을 끌어올릴 수 있는 훌륭한 무기입니다.

 

 

728x90
반응형