엑셀 피벗 테이블 클릭 노가다 끝! 파이썬으로 자동 생성하기

이미지
엑셀 피벗 테이블 클릭 노가다 끝! 파이썬으로 자동 생성하기 (완성 코드 공개) "지역별·월별 매출 합계를 피벗으로 보고 싶은데 매번 엑셀에서 직접 만들어야 한다", "데이터가 바뀔 때마다 피벗 테이블을 새로 만들어야 해서 번거롭다", "여러 집계(합계, 평균, 개수)를 한 번에 보고 싶다"… 엑셀 피벗 테이블은 강력하지만 데이터가 바뀔 때마다 설정을 다시 해야 하는 번거로움이 있습니다. 파이썬의 pandas 를 사용하면 행·열·값·집계 방식을 코드로 정의해두고, 데이터가 바뀌어도 실행 한 번으로 피벗 테이블을 자동으로 생성하고 엑셀로 저장할 수 있습니다. 1단계: 준비물 설치 파이썬이 설치되어 있어야 합니다. 없다면 python.org 에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH" 에 체크해야 합니다. 터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요: pip install pandas openpyxl pandas 의 pivot_table() 함수는 엑셀 피벗 테이블과 동일한 기능을 코드로 구현합니다. 행 그룹, 열 그룹, 집계 값, 집계 방식(합계·평균·개수 등)을 자유롭게 설정할 수 있습니다. 💡 이 코드로 할 수 있는 것: 행(Row)·열(Column)·값(Value)·집계 방식을 지정해 피벗 테이블 자동 생성, 합계·평균·최대·최소·개수 다중 집계 동시 처리, 소계(행·열 합계) 자동 추가, 결과를 서식이 적용된 엑셀로 저장합니다. 2단계: 엑셀 파일 준비 처리할 엑셀 파일은 아래처럼 1행이 헤더이고 2행부터 데이터가 입력된 형태이면 됩니다. 날짜 지역 담당자 상품분류 매출금액 수량 2026-01-05 서울 홍길동 전자제품 5,200,000 12 2026-01-12 부산 김철수 의류 980,...

파이썬 자동화의 완성! 스케줄러로 코드 특정 시간에 자동 실행하기

파이썬 자동화의 완성! 스케줄러로 코드 특정 시간에 자동 실행하기 (완성 코드 공개)

파이썬 스케줄러로 코드를 특정 시간에 자동 실행하는 모습


지금까지 엑셀 자동화, 이메일 발송, 데이터 수집, 파일 정리 등 다양한 파이썬 자동화 스크립트를 만들었습니다. 그런데 스크립트를 직접 실행해야 한다면 완전한 자동화라고 할 수 없습니다. "매일 오전 9시에 주식 데이터 수집", "매주 월요일에 보고서 이메일 발송", "매달 말일에 폴더 백업"처럼 사람이 없어도 정해진 시간에 자동으로 실행되어야 진짜 자동화입니다.

이 글에서는 파이썬 스케줄링의 두 가지 핵심 방법인 schedule 라이브러리윈도우 작업 스케줄러를 비교하고, 상황에 맞는 방법을 선택하는 기준까지 완전 정복합니다.


방법 비교: schedule 라이브러리 vs 윈도우 작업 스케줄러

두 방법은 목적이 조금 다릅니다. 어떤 방법이 본인 상황에 맞는지 먼저 확인하세요.

                    schedule 라이브러리    윈도우 작업 스케줄러
설정 방법           코드 안에서 설정        윈도우 UI에서 설정
PC 재시작 후        재실행 필요             자동 재실행 가능
터미널 창 필요      필요 (백그라운드 가능)  불필요
N분마다 실행        매우 쉬움               설정 복잡
PC 꺼져있을 때      실행 안 됨              실행 안 됨
여러 작업 관리      코드 한 곳에서 관리     각각 별도 등록 필요
추천 용도           개발·테스트, 단순 반복  실무 장기 운영
💡 선택 기준: 개발 중이거나 N분마다 반복 실행이 필요하면 schedule 라이브러리, PC 재시작 후에도 자동 실행이 필요한 실무 운영 환경이라면 윈도우 작업 스케줄러를 사용하세요.

방법 1: schedule 라이브러리 (코드로 스케줄링)

설치

pip install schedule

완성 코드

아래 코드를 scheduler.py로 저장하고 실행하면 설정한 시간마다 자동으로 지정한 함수가 실행됩니다.

import schedule
import time
import subprocess
from datetime import datetime

# ① 실행할 작업 함수 정의
def run_script(script_path):
    """지정한 파이썬 스크립트를 실행하는 함수"""
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    print(f"  [{now}] 실행 시작: {script_path}")
    try:
        result = subprocess.run(
            ["python", script_path],
            capture_output=True, text=True, timeout=300   # 5분 타임아웃
        )
        if result.returncode == 0:
            print(f"  ✔ 성공: {script_path}")
        else:
            print(f"  ✘ 오류: {result.stderr[:200]}")
    except subprocess.TimeoutExpired:
        print(f"  ✘ 타임아웃: {script_path}")
    except Exception as e:
        print(f"  ✘ 실패: {e}")

# ② 스크립트 경로 설정
STOCK_SCRIPT   = r"C:\Users\내이름\Desktop\자동화\collect_finance.py"
WEATHER_SCRIPT = r"C:\Users\내이름\Desktop\자동화\weather.py"
BACKUP_SCRIPT  = r"C:\Users\내이름\Desktop\자동화\auto_backup.py"
EMAIL_SCRIPT   = r"C:\Users\내이름\Desktop\자동화\auto_email.py"

# ③ 스케줄 등록 (원하는 항목만 주석 해제)

# 매일 오전 9시: 주식·환율 데이터 수집
schedule.every().day.at("09:00").do(run_script, STOCK_SCRIPT)

# 매일 오전 8시 50분: 날씨 데이터 수집
schedule.every().day.at("08:50").do(run_script, WEATHER_SCRIPT)

# 매일 오후 6시: 폴더 자동 백업
schedule.every().day.at("18:00").do(run_script, BACKUP_SCRIPT)

# 매주 월요일 오전 9시 10분: 주간 보고 이메일 발송
schedule.every().monday.at("09:10").do(run_script, EMAIL_SCRIPT)

# 30분마다: 인터넷 속도 측정
# schedule.every(30).minutes.do(run_script, SPEED_SCRIPT)

# ④ 스케줄러 실행 (종료하려면 Ctrl+C)
print(f"▶ 스케줄러 시작: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("  등록된 스케줄:")
for job in schedule.jobs:
    print(f"    - {job}")
print("  종료: Ctrl+C\n")

while True:
    schedule.run_pending()
    time.sleep(30)

실행 후 터미널에 등록된 스케줄 목록이 출력되고, 설정한 시간이 되면 자동으로 해당 스크립트가 실행됩니다.


방법 2: 윈도우 작업 스케줄러 (PC 재시작 후에도 자동 실행)

PC를 재시작해도 자동 실행되게 하려면 윈도우 작업 스케줄러에 등록해야 합니다.

등록 방법

  1. 윈도우 검색창에 "작업 스케줄러" 입력 후 실행합니다.
  2. 오른쪽 패널 "기본 작업 만들기" 클릭합니다.
  3. 이름(예: "주식 데이터 자동 수집"), 설명 입력 후 다음을 클릭합니다.
  4. 트리거 선택: "매일" → 시작 날짜와 실행 시간 설정합니다.
  5. 동작: "프로그램 시작" 선택 후 아래처럼 입력합니다:
프로그램/스크립트: pythonw
인수 추가:         "C:\Users\내이름\Desktop\자동화\collect_finance.py"
시작 위치:         C:\Users\내이름\Desktop\자동화
⚠️ 중요 설정: 작업을 만든 후 반드시 "속성"에서 아래 두 항목을 확인하세요. 첫째, "최고 권한으로 실행"에 체크해야 파일 접근 권한 오류를 방지합니다. 둘째, "배터리 전원 사용 시에도 실행"에 체크해야 노트북 사용 시에도 실행됩니다.

작업 스케줄러 자동 등록 코드

매번 UI를 클릭하기 번거롭다면 파이썬 코드로 작업 스케줄러에 자동 등록할 수 있습니다. 아래 코드를 register_task.py로 저장하고 관리자 권한으로 실행하세요.

import subprocess

# ① 등록할 작업 설정
TASK_NAME   = "파이썬_주식데이터_수집"
SCRIPT_PATH = r"C:\Users\내이름\Desktop\자동화\collect_finance.py"
RUN_TIME    = "09:00"   # ← 실행 시간 (HH:MM 형식)
SCHEDULE    = "DAILY"   # ← DAILY / WEEKLY / MONTHLY

# ② 명령어 구성
cmd = [
    "schtasks", "/Create",
    "/TN", TASK_NAME,
    "/TR", f'pythonw "{SCRIPT_PATH}"',
    "/SC", SCHEDULE,
    "/ST", RUN_TIME,
    "/RL", "HIGHEST",   # 최고 권한으로 실행
    "/F",               # 같은 이름 작업 덮어쓰기
]

result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
    print(f"✅ 작업 등록 완료: {TASK_NAME}")
    print(f"   실행 시간: 매일 {RUN_TIME}")
else:
    print(f"✘ 등록 실패: {result.stderr}")
    print("  관리자 권한으로 실행했는지 확인하세요.")

자주 발생하는 오류와 해결법

오류 1: 작업 스케줄러에서 스크립트가 실행되지 않음

가장 흔한 원인은 경로 문제입니다. "시작 위치"에 스크립트가 있는 폴더 경로를 반드시 입력해야 합니다. 또한 pythonw 대신 python의 전체 경로(예: C:\Python312\python.exe)를 입력하면 더 안정적으로 실행됩니다.

오류 2: schedule 라이브러리가 터미널을 닫으면 중단됨

터미널 창을 닫으면 스케줄러가 중단됩니다. 백그라운드에서 계속 실행하려면 아래처럼 pythonw로 실행하세요:

pythonw scheduler.py

오류 3: 스크립트 실행 중 오류가 발생해도 알 수 없음

자동 실행 시 오류가 터미널에 출력되지 않아 문제를 파악하기 어렵습니다. 코드 안에 로그 파일을 남기도록 아래 코드를 추가하세요:

import logging
from pathlib import Path

LOG_PATH = r"C:\Users\내이름\Desktop\자동화\실행로그.txt"
logging.basicConfig(
    filename=LOG_PATH,
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s",
    encoding="utf-8"
)
logging.info("스크립트 시작")
# ... 기존 코드 ...
logging.info("스크립트 완료")

이 블로그 자동화 시리즈와 연결하기

지금까지 이 블로그에서 소개한 자동화 스크립트들을 스케줄러로 연결하면 완전한 업무 자동화 파이프라인이 완성됩니다.

매일 오전 08:50  →  날씨 데이터 수집 후 텔레그램 알림
매일 오전 09:00  →  주식·환율 데이터 수집 후 엑셀 저장
매일 오전 09:05  →  수집 데이터로 차트 이미지 자동 생성
매일 오전 09:10  →  차트·데이터 이메일 자동 발송
매일 오후 03:40  →  장 마감 후 주식 데이터 재수집
매일 오후 06:00  →  업무 폴더 자동 백업 (ZIP 압축)
매주 월요일 09:00 →  주간 보고서 자동 생성 및 발송
매달 말일 18:00  →  월간 데이터 집계 후 엑셀 저장
💡 시리즈 전체 연결: 이 블로그의 모든 자동화 편을 조합하면 데이터 수집 → 처리 → 저장 → 시각화 → 발송 → 백업까지 사람 손 없이 완전 자동으로 돌아가는 업무 시스템을 만들 수 있습니다.

핵심 요약

  • schedule 라이브러리: 코드 안에서 스케줄 관리, N분마다 반복에 강함, 터미널 실행 필요
  • 윈도우 작업 스케줄러: UI 또는 코드로 등록, PC 재시작 후에도 자동 실행, 실무 장기 운영에 적합
  • 선택 기준: 단기 테스트·개발 → schedule / 실무 장기 운영 → 윈도우 작업 스케줄러
  • 필수 설정: 최고 권한 실행, 배터리 전원 시 실행, 시작 위치 지정, 로그 파일 남기기

이 코드를 응용하면 리눅스 서버에서 crontab으로 스케줄링하거나, 클라우드 함수(AWS Lambda, GCP Cloud Functions)로 서버리스 자동화를 구성하는 것도 가능합니다.

이 블로그의 인기 게시물

느려진 구글 크롬 속도 2배 빨라지는 3가지 설정 방법 (2026년 최신 가이드)

카카오톡 용량 줄이기! 대화방 파일 삭제로 스마트폰 용량 확보법 (1분 해결)

업무 속도 3배 빨라지는 윈도우 기본 캡처 도구 단축키 및 200% 활용 꿀팁