클릭조차 필요 없다! 윈도우 작업 스케줄러로 파이썬 새벽에 자동 실행하기

 15편에서 우리는 파이썬 코드를 더블클릭 한 번으로 실행할 수 있는 'bat(배치) 파일'을 만들었습니다. 덕분에 매번 파이썬 편집기를 켜는 수고는 덜었지만, 여전히 아침에 출근해서 마우스로 아이콘을 더블클릭하는 '사람의 손길'이 필요합니다. 만약 내가 출근하기도 전인 새벽 6시에, 컴퓨터가 알아서 어제까지의 데이터를 수집하고 엑셀 보고서로 요약한 뒤 팀장님 메일로 쏘아놓는다면 어떨까요? 나는 출근해서 커피 한 잔의 여유를 즐기기만 하면 됩니다. 오늘은 여러분의 파이썬 코드를 완벽한 '무인(Hands-free) 시스템'으로 만들어 줄 윈도우 작업 스케줄러(Task Scheduler) 활용법을 공개합니다. 1. 윈도우 작업 스케줄러 실행하기 이 기능은 윈도우(Windows) 운영체제에 기본으로 탑재되어 있어 별도로 프로그램을 설치할 필요가 없습니다. 키보드의 윈도우 키 를 누릅니다. 검색창에 '작업 스케줄러' (또는 Task Scheduler)를 입력하고 엔터를 칩니다. 시계 모양의 아이콘이 있는 창이 열리면 우측 메뉴에서 [기본 작업 만들기...] 를 클릭합니다. 2. 언제 실행할까요? (트리거 세팅) 작업 만들기 마법사가 실행되면, 컴퓨터에게 '언제' 실행할 것인지 스케줄을 지정해 줍니다. 이름: '일일 자동 보고서 작성' 등 본인이 알아보기 쉬운 이름을 적고 [다음]을 누릅니다. 트리거: 얼마나 자주 실행할지 묻습니다. '매일'을 선택합니다. 시간: 코드가 실행될 시간을 지정합니다. (예: 오전 06:00:00) 지정 후 [다음]을 누릅니다. 3. 무엇을 실행할까요? (동작 세팅) 이제 정해진 시간에 어떤 프로그램을 켤 것인지 알려줄 차례입니다. 작업: '프로그램 시작'을 선택하고 [다음]을 누릅니다. 프로그램/스크립트: [찾아보기]...

아웃룩 켤 필요 없다! 파이썬으로 엑셀 첨부파일 자동 이메일 쏘기

  파이썬으로 흩어진 엑셀 데이터를 모으고, 피벗 테이블로 요약하고, 차트까지 그렸습니다. 이제 이 완벽한 보고서를 30명의 부서장들에게 이메일로 보낼 차례입니다. 보통이라면 어떻게 할까요? 아웃룩이나 지메일 창을 30번 띄우고, "안녕하세요, OOO 부서장님. 이번 달 실적 첨부합니다."라는 똑같은 멘트를 복사해서 붙여넣은 뒤, 실수로 엉뚱한 파일을 첨부하지는 않았는지 조마조마하며 발송 버튼을 누를 것입니다. 데이터 전처리를 아무리 자동화했어도, 배포하는 과정에서 사람의 손을 타면 결국 '야근'을 피할 수 없습니다. 하지만 파이썬은 이메일 발송마저도 단 몇 초 만에 처리해 냅니다. 오늘은 파이썬 코드로 이메일을 작성하고, 엑셀 파일을 첨부해서 자동으로 쏘아 보내는 '이메일 자동화' 의 세계를 안내해 드립니다. 1. 파이썬의 우체부: smtplib와 email 라이브러리 파이썬에서 이메일을 보내려면 기본적으로 내장되어 있는 두 가지 도구를 사용합니다. email 모듈은 편지지와 봉투를 예쁘게 꾸미는 역할을 하고, smtplib 는 완성된 편지를 우체통에 넣어 실제 목적지로 쏘아 보내는 집배원 역할을 합니다. 이메일을 보내기 위해서는 구글(Gmail) 계정을 사용하는 것이 가장 대중적입니다. 단, 보안 문제 때문에 내 원래 구글 비밀번호를 코드에 직접 쓰면 안 되며, 구글 계정 설정에서 '앱 비밀번호(16자리 문자)' 를 따로 발급받아 사용해야 합니다. 2. 엑셀 파일 첨부하고 이메일 보내기 (실전 코드) 백문이 불여일견입니다. 내가 만든 '최종보고서.xlsx' 파일을 팀장님께 자동으로 보내는 전체 코드를 살펴보겠습니다. import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.application import MIM...

복사 붙여넣기 지옥 탈출! 파이썬 웹 크롤링으로 인터넷 데이터 엑셀에 자동 수집하기

  매일 아침 출근하자마자 하는 일이 혹시 인터넷 창을 띄우는 것인가요? 환율 정보, 경쟁사 쇼핑몰의 상품 가격, 오늘의 주요 뉴스 제목 등을 마우스로 쭉 드래그해서 복사(Ctrl+C)한 뒤, 엑셀을 열고 붙여넣기(Ctrl+V)를 반복하고 계시다면 오늘 이 글이 여러분의 아침 시간을 완벽하게 바꿔놓을 것입니다. 사람이 눈으로 보고 마우스로 긁어오는 작업을 컴퓨터가 대신 눈 깜짝할 사이에 해치우는 기술, 바로 '웹 크롤링(Web Crawling)' 입니다. 파이썬과 판다스(Pandas)를 결합하면 인터넷상의 데이터를 1초 만에 긁어와서 깔끔한 엑셀 표로 저장할 수 있습니다. 오늘은 파이썬 크롤링의 국민 도구인 BeautifulSoup 을 활용해 웹 데이터를 수집하는 기초를 다져보겠습니다. 1. 웹 크롤링의 두 가지 필수 무기 인터넷의 데이터를 가져오려면 파이썬에게 두 가지 도구를 쥐여주어야 합니다. requests (요청하기): 인터넷 주소창에 URL을 입력하고 엔터를 치는 역할을 합니다. 웹페이지의 전체 소스코드(HTML)를 통째로 다운받아 옵니다. BeautifulSoup (요리하기): requests가 가져온 복잡한 외계어 같은 소스코드 속에서, 우리가 원하는 진짜 데이터(텍스트)만 예쁘게 발라내는 정교한 칼잡이 역할을 합니다. 코드를 작성하기 전, 주피터 노트북이나 터미널에서 pip install requests beautifulsoup4 를 입력해 두 도구를 설치해 줍니다. (판다스는 이미 설치되어 있다고 가정합니다.) 2. F12 개발자 도구로 데이터의 '이름표' 찾기 컴퓨터는 사람처럼 "저기 굵은 글씨로 적힌 뉴스 제목 좀 가져와"라고 말하면 알아듣지 못합니다. 웹사이트의 모든 글씨에는 고유한 'HTML 태그와 클래스 이름' 이 붙어있으며, 우리는 이 이름표를 파이썬에게 알려주어야 합니다. 크롬(Chrome) 브라우저에서 원하는 데이터가 있는...

엑셀로는 안 열리는 200만 행 대용량 데이터, 파이썬으로 1초 만에 요약하기

 회사에서 수년간 누적된 판매 데이터나 웹사이트 로그 데이터를 다운로드해 본 적 있으신가요? 파일 용량이 500MB를 넘어가고, 엑셀로 더블클릭해서 열었더니 화면 상단에 "데이터가 너무 많아 완전히 로드되지 않았습니다"라는 무시무시한 경고창이 뜹니다. 스크롤을 맨 밑으로 내려보면 정확히 1,048,576행에서 데이터가 싹둑 잘려 있습니다. 엑셀이라는 프로그램이 태생적으로 담을 수 있는 최대 한계치가 약 104만 행이기 때문입니다. 그 이상의 데이터는 엑셀로는 아예 열어볼 수조차 없습니다. 결국 데이터를 월별로 쪼개서 다운받는 등 불필요한 노가다를 해야 하죠. 하지만 파이썬에게 데이터의 한계란 '컴퓨터 메모리(RAM)의 한계'일 뿐입니다. 오늘은 엑셀은 쳐다보지도 못하는 200만 행, 1,000만 행의 대용량 데이터를 파이썬으로 가볍게 다루는 심화 기술을 알아보겠습니다. 1. 대용량 데이터의 표준, CSV 파일 불러오기 보통 100만 행이 넘어가는 대용량 데이터는 .xlsx 포맷이 아니라 .csv 포맷으로 저장되어 있습니다. CSV는 서식 없이 콤마(,)로만 데이터를 구분한 순수 텍스트 파일이라 용량이 훨씬 가볍기 때문입니다. 판다스에서 CSV 파일을 불러오는 방법은 엑셀과 거의 똑같습니다. read_excel 대신 read_csv 만 써주면 됩니다. import pandas as pd df = pd.read_csv('3년치_전체판매로그.csv') 엑셀이 열다가 기절해버린 200만 행짜리 파일도, 파이썬에서는 위 코드 한 줄이면 단 몇 초 만에 데이터 프레임(표)으로 변환되어 메모리에 척척 올라갑니다. 이제 13편에서 배웠던 피벗 테이블 코드를 돌리면 200만 행의 데이터도 순식간에 요약할 수 있습니다. 2. 컴퓨터가 멈춘다면? 마법의 옵션 chunksize 파이썬이 아무리 강력해도, 내 컴퓨터의 램(RAM) 메모리가 8GB밖에 안 되는데 10GB짜리 초거대 데이터를 한 번에 불러오려 ...

파이썬 몰라도 더블클릭이면 끝! 자동화 코드 bat 파일로 원클릭 실행하기

지난 14편 동안 우리는 파이썬과 판다스(Pandas)를 이용해 흩어진 엑셀 파일을 하나로 합치고, 불필요한 데이터를 청소하고, 피벗 테이블로 요약한 뒤, 예쁜 차트까지 엑셀에 쏙 집어넣는 완벽한 자동화 코드를 완성했습니다. 여기까지 따라오시느라 정말 고생 많으셨습니다! 하지만 진정한 자동화는 여기서 끝이 아닙니다. 매일 아침 출근해서 이 코드를 실행하기 위해 주피터 노트북(Jupyter)이나 VS Code 같은 파이썬 편집기를 켜고, 코드 실행 버튼을 누르는 과정조차 귀찮지 않으신가요? 게다가 이 훌륭한 결과물을 파이썬이 안 깔려 있는 다른 팀원들에게 공유하고 싶을 때는 어떻게 해야 할까요? 오늘은 파이썬 코드를 일반 프로그램처럼 아이콘 '더블클릭' 한 번으로 실행하게 만들어주는 마법, bat(배치) 파일 만들기 를 배워보겠습니다. 1. 윈도우 메모장 하나면 준비 끝! 거창한 프로그램이 필요하지 않습니다. 윈도우에 기본으로 깔려있는 '메모장(Notepad)'을 엽니다. 그리고 딱 두 줄만 적어주면 됩니다. (여러분이 작성한 파이썬 코드 파일 이름이 auto_report.py 라고 가정해 보겠습니다.) python auto_report.py pause python auto_report.py : 컴퓨터에게 "파이썬으로 이 파일을 실행해 줘!"라고 내리는 명령입니다. pause : 코드가 실행된 후 까만색 명령 프롬프트 창이 휙 꺼지지 않고, 우리가 결과를 확인하거나 에러 메시지를 읽을 수 있도록 화면을 잠시 멈춰주는 역할을 합니다. 2. 저장할 때 주의사항: 확장자를 .bat으로! 메모장에 두 줄을 적었다면 [파일] - [다른 이름으로 저장] 을 누릅니다. 여기서 실무자들이 가장 많이 하는 실수가 있습니다. 파일 이름을 그냥 적고 저장하면 실행.bat.txt 처럼 단순한 메모장 파일로 저장되어 버립니다. 반드시 저장 창 아래쪽에 있는 [파일 형식]을 '텍스트 ...

엑셀 차트 필요 없다! 파이썬으로 1초 만에 그래프 그리고 엑셀에 자동 삽입하기

 데이터를 깔끔하게 다듬고 피벗 테이블로 요약까지 마쳤다면, 이제 방점을 찍을 차례입니다. 숫자가 빼곡한 표만으로는 팀장님의 마음을 사로잡을 수 없습니다. 직관적으로 한눈에 들어오는 '그래프(차트)'가 반드시 필요하죠. 엑셀에서 차트를 그리려면 데이터 범위를 드래그하고, 삽입 탭에 가서 차트 종류를 고르고, 축 제목을 바꾸고, 색상을 변경하는 등 마우스 클릭을 수십 번 해야 합니다. 매달 데이터가 바뀔 때마다 이 작업을 반복하는 것은 엄청난 스트레스입니다. 하지만 파이썬에서는 표에 있는 숫자를 그래프로 바꾸고, 심지어 엑셀 파일 안에 예쁘게 배치하는 것까지 단 몇 줄의 코드로 완벽하게 자동화할 수 있습니다. 1. 표를 1초 만에 그림으로: df.plot() 파이썬 판다스(Pandas)에는 데이터 프레임(표)을 즉시 그래프로 바꿔주는 아주 편리한 plot() 기능이 내장되어 있습니다. 13편에서 만든 부서별 매출액 피벗 테이블(pivot_df)이 있다고 가정해 봅시다. 이 표를 막대그래프로 보고 싶다면 어떻게 할까요? pivot_df.plot(kind='bar') 놀랍게도 이게 끝입니다. kind='bar' 는 막대그래프, kind='line' 은 꺾은선그래프를 의미합니다. 이 코드 한 줄이면 파이썬이 표의 행과 열을 알아서 분석해 X축과 Y축을 설정하고 알록달록한 그래프를 화면에 띄워줍니다. 2. 실무자 필수 팁: 한글 깨짐 방지 폰트 설정 여기서 한국인 실무자들이 100% 마주치는 에러가 있습니다. 파이썬 그래프의 기본 폰트는 영어 전용이라서, 부서명 같은 한글 데이터가 전부 네모 박스(ㅁㅁㅁ)로 깨져서 나옵니다. 이때는 당황하지 마시고 코드 맨 위에 '맑은 고딕' 폰트를 사용하겠다는 마법의 주문 두 줄을 추가해 주세요. import matplotlib.pyplot as plt plt.rc('font', family='Malgun Goth...

엑셀 피벗 테이블(Pivot Table), 파이썬 코드 한 줄로 1초 만에 자동화하기

  수만 줄, 수십만 줄의 원본 데이터(Raw Data)를 팀장님이 한눈에 볼 수 있도록 요약하려면 어떻게 해야 할까요? 엑셀을 조금 다룰 줄 아는 직장인이라면 주저 없이 '피벗 테이블(Pivot Table)'을 켤 것입니다. 십자 모양의 틀 안에 부서명, 날짜, 매출액을 마우스로 끌어다 놓기만 하면 순식간에 멋진 요약 보고서가 완성되니까요. 하지만 엑셀 피벗 테이블에는 치명적인 단점이 있습니다. 매달 새로운 데이터가 추가될 때마다 원본 범위를 다시 잡고 '새로고침'을 눌러야 하며, 마우스로 일일이 필드를 드래그하는 작업은 '자동화'와 거리가 멉니다. 파이썬 판다스(Pandas)에서는 이 번거로운 마우스 드래그 작업을 단 한 줄의 코드로 영구적으로 자동화할 수 있습니다. 오늘은 파이썬으로 피벗 테이블을 1초 만에 뚝딱 만들어내는 공식을 알아보겠습니다. 1. 엑셀의 4구역, 파이썬 코드로 매칭하기 엑셀 피벗 테이블을 띄우면 우측에 4개의 네모 칸(필터, 열, 행, 값)이 나옵니다. 파이썬의 pd.pivot_table() 함수는 이 4개의 칸을 영단어로 그대로 옮겨놓았을 뿐, 원리는 100% 똑같습니다. index : 엑셀의 [행] (예: 부서별로 볼래) columns : 엑셀의 [열] (예: 월별로 나누어서 볼래) values : 엑셀의 [값] (예: 매출액을 볼래) aggfunc : [계산 방식] (예: 더할래? 평균을 낼래?) 이 공식만 머릿속에 넣으면 끝입니다. "부서별(행), 월별(열) 매출액(값)의 합계(계산)를 구해줘!"를 코드로 바꾸면 아래와 같이 됩니다. pivot_df = pd.pivot_table(df, index='부서명', columns='월', values='매출액', aggfunc='sum') 이 한 줄을 실행하는 순간, 마우스로 낑낑대며 드래그하던 ...