마법의 스크립트 한 방으로 Excel 보고서 생성하기
매월 거래처별로 수십 장씩 날아오는 엑셀 파일들. 열고 복사해서 붙여넣고, 오타 고치고, 피벗 돌려서 보고서 만들고... 이 지겨운 수작업을 공인회계사들이 왜 직접 해야 할까요?
이번 단계에서는 지정된 폴더에 엑셀을 몰아넣기만 하면 자동으로 취합, 집계, 증감률 계산, 조건부 서식과 차트가 포함된 멀티 시트 보고서를 찍어내는 강력한 파이썬 스크립트를 직접 코딩합니다.
지긋지긋한 복붙(Ctrl+C, Ctrl+V)의 종말
공인회계사 대상 오프라인 파이썬 교육을 하면, 현업 회계사분들의 눈이 가장 반짝거리는 순간이 바로 이 파트입니다.
다수의 Excel 파일 한 번에 싹 다 취합하기
pathlib 라이브러리를 사용해 특정 폴더를 순회하며 엑셀을 읽어 pd.concat()으로 병합합니다. 어떤 파일에서 문제가 터졌는지 try-except로 예외를 기록하는 것이 실무의 핵심입니다.
from pathlib import Path import pandas as pd folder = Path("./data") all_data = [] for file in folder.glob("*.xlsx"): try: df = pd.read_excel(file) df["source_file"] = file.name # 출처 기록 df["customer"] = file.stem.split("_")[0] # 파일명(ABC_8월.xlsx)에서 거래처 추출 all_data.append(df) except Exception as e: print(f"{file.name} 오류: {e}") result_df = pd.concat(all_data, ignore_index=True)
거래처/계정과목/월별 자동 집계
Pandas의 가장 강력한 기능인 groupby를 사용하여 다양한 뷰(View)의 데이터를 생성합니다.
# 1. 거래처 + 계정과목별 집계 summary_account = df.groupby(["customer", "account"])["amount"].sum().reset_index() # 2. 월별 집계 (날짜에서 월 추출) df["month"] = df["transaction_date"].dt.to_period("M") monthly = df.groupby("month")["amount"].sum().reset_index()
MoM 증감률 계산과 이상징후 포착
회계감사나 결산 검토 시 '튀는 숫자'를 찾아내는 것이 중요합니다. shift(1) 함수로 전월 데이터를 가져와 증감률(%)을 구합니다.
monthly["previous"] = monthly["amount"].shift(1) monthly["change_rate"] = (monthly["amount"] - monthly["previous"]) / monthly["previous"] * 100 # 전월 대비 30% 이상 급등/급락한 이상 거래만 필터링! anomaly = monthly[monthly["change_rate"].abs() >= 30]
Pandas로 피벗테이블 만들기
엑셀의 꽃, 피벗테이블도 파이썬으로 1줄이면 완성됩니다.
pivot = pd.pivot_table( df, index="customer", # 행 columns="account", # 열 values="amount", # 값 aggfunc="sum", # 집계방식 fill_value=0 )
xlsxwriter: 다중 시트, 서식, 차트가 포함된 최종 보고서
데이터 가공이 끝났다면, 회계사나 고객이 보기 좋은 '예쁜 엑셀 파일'로 만들어야 합니다. xlsxwriter 엔진을 사용하면 엑셀 파일에 시트를 나누고, 틀 고정, 숫자 콤마 형식, 조건부 서식, 심지어 그래프 차트까지 코드로 그려 넣을 수 있습니다.
with pd.ExcelWriter("accounting_report.xlsx", engine="xlsxwriter") as writer: # 1. 시트별로 데이터 밀어넣기 df.to_excel(writer, sheet_name="원본데이터", index=False) monthly.to_excel(writer, sheet_name="월별분석", index=False) # 2. 서식 및 차트 객체 획득 workbook = writer.book worksheet = writer.sheets["월별분석"] # 3. 30% 이상 증감한 셀 빨간색 강조 (조건부 서식) worksheet.conditional_format("D2:D100", {"type": "cell", "criteria": ">=", "value": 30}) # 4. 차트 생성 및 삽입 chart = workbook.add_chart({"type": "column"}) chart.add_series({"categories": "=월별분석!$A$2:$A$13", "values": "=월별분석!$B$2:$B$13"}) worksheet.insert_chart("F2", chart)
AI와 Python의 완벽한 분업 체계
수십만 건의 거래 내역을 AI에게 통째로 던지며 "분석해 줘"라고 하면 속도도 느리고 거짓말(환각)을 할 수 있습니다.
대신, 위에서 만든 파이썬 스크립트가 "광고선전비가 전월 대비 +72% 증가함" 이라는 팩트(JSON)만 깔끔하게 도출한 뒤 AI에게 던지면, AI는 "전월 대비 72% 증가한 광고선전비 지출에 대해 해당 거래처의 세금계산서 수취 여부를 우선 검토해야 합니다."라는 전문가 수준의 자연어 보고서만 얹어주는 환상적인 협업이 완성됩니다.
40단계 예고: 영수증/세금계산서 AI OCR 추출기
39단계에서 정형화된 "엑셀" 파일을 자동화하는 마법을 배웠습니다.
하지만 실제 회계 실무에서는 여전히 '구겨진 종이 영수증 사진', '스캔된 세금계산서 PDF' 등 비정형 문서가 쏟아집니다.
다음 40단계에서는 이러한 비정형 이미지에서 텍스트를 뽑아내고, AI 모델을 통해 거래처, 공급가액, 부가세 정보를 자동으로 추출(Information Extraction)하는 Document AI 아키텍처를 구현해 보겠습니다.