여러분의 칼퇴를 앞당겨 줄 파이썬 데이터 리포트 자동화 스크립트 공유합니다
안녕하세요 OKKY 회원 여러분. 10년차 개발자로 일하며 기술 공유의 즐거움을 알아가고 있는 루비니입니다.
1. 문제 제기: "아, 이 단순 반복 작업 언제까지 해야 하지?"
매일 아침, 혹은 매주 월요일, 반복되는 리포트 작업에 지치지 않으신가요? 엑셀 파일 열어서 데이터 정리하고, 피벗 돌려서 차트 만들고, 그걸 또 예쁘게 캡처해서 PDF로 변환하고, 메일로 "금일 데이터 공유드립니다." 하며 보내는 그 과정 말입니다.
저 역시 이런 단순 반복 업무에 시간을 쏟는 것이 너무 아까웠습니다. 개발자라면 누구나 한 번쯤 "이걸 왜 사람이 매번 해야 하나? 스크립트로 자동화할 순 없나?" 하는 생각을 해보셨을 겁니다. 시중에는 훌륭한 툴도 많지만, 특정 포맷의 간단한 리포트를 위해 무거운 툴을 매번 사용하는 것도 번거롭기는 마찬가지였죠.
2. 해결책 제시: 데이터 처리부터 메일 발송까지, 스크립트 하나로 끝내세요.
그래서 주말에 짬을 내어 간단한 파이썬 스크립트를 하나 만들었습니다. 이 스크립트는 다음의 모든 과정을 버튼 클릭 한 번으로 처리해 줍니다.
데이터 처리: 원본 데이터(CSV, Excel 등)를 읽어와 필요한 형태로 가공합니다.
데이터 시각화: 가공된 데이터를 바탕으로 핵심 지표를 보여주는 차트를 생성합니다.
PDF 리포트 생성: 데이터 요약 테이블과 방금 생성한 차트를 포함한 깔끔한 PDF 리포트를 만듭니다.
자동 메일 발송: 생성된 PDF 파일을 첨부하여 지정된 수신자에게 자동으로 이메일을 보냅니다.
이 모든 과정을 Streamlit을 이용해 간단한 웹 UI로 만들었습니다. 이제 더 이상 검은 터미널 창에서 명령어를 입력할 필요 없이 웹 브라우저에서 파일을 업로드하고 버튼만 누르면 모든 작업이 끝납니다.



3. 차별점 강조: 왜 다른 툴 대신 이 스크립트일까요?
무거운 BI 툴을 설치하거나 복잡한 설정을 할 필요가 없습니다. Python 환경만 있다면 `pip install` 몇 줄로 바로 실행할 수 있습니다. 특정 목적을 위해 빠르고 가볍게 적용하기에 최적화되어 있습니다.
또한 압도적인 커스터마이징 자유도를 가집니다.
이것이 바로 '코드'의 가장 큰 장점입니다. "차트 종류를 막대그래프로 바꾸고 싶다", "메일 본문에 특정 데이터를 동적으로 넣고 싶다", "PDF 레이아웃을 우리 팀 양식에 맞게 바꾸고 싶다" 와 같은 모든 요구사항을 코드 몇 줄 수정하는 것만으로 완벽하게 구현할 수 있습니다.
마지막으로 완벽한 한글 지원을 고려했습니다.
코드에 포함된 `NanumGothic.ttf` 설정처럼, Matplotlib 차트나 FPDF로 생성되는 PDF에서 한글이 깨지는 고질적인 문제를 처음부터 해결해두었습니다. 더 이상 깨진 폰트와 씨름하지 않으셔도 됩니다.
4. 행동 유도: 지금 바로 여러분의 반복 업무를 자동화하세요!
지금 바로 여러분의 반복적인 리포트 업무에 이 스크립트를 적용해보세요. 코드는 전체 공개되어 있으며, 얼마든지 여러분의 입맛에 맞게 수정하고 발전시켜 사용하셔도 좋습니다.
**[Github 리포지토리 바로가기]**
https://github.com/kaausia45-jpg/simple_workflow/tree/main
**간단 사용법:**
```bash
# 1. 리포지토리 클론
git clone https://github.com/your-username/your-repo-name.git
cd your-repo-name
# 2. 필요 라이브러리 설치
pip install -r requirements.txt
# 3. 환경 변수 설정 (.env 파일 생성)
# SMTP_USER="your_email@example.com" 등 메일 정보 입력
# 4. 스크립트 실행
streamlit run main.py
사용해보시고 불편한 점이나 개선 아이디어, 혹은 "이런 기능이 추가되면 정말 좋겠다!" 하는 의견이 있다면 언제든지 댓글이나 Github 이슈로 남겨주세요. 여러분의 피드백은 이 작은 스크립트를 더 유용한 도구로 만드는 가장 큰 원동력이 됩니다.
여러분의 '칼퇴'에 조금이나마 도움이 되었으면 합니다.
감사합니다.
<참고>