본문 바로가기
카테고리 없음

엑셀 대신 파이썬 자동화 가이드

by lifetreecore 2025. 8. 23.
반응형

엑셀 대신 파이썬 자동화 가이드

한 줄 요약: 엑셀에서 매번 하던 복붙·VLOOKUP·피벗·조건부 계산을 파이썬으로 자동화하면 클릭 0번으로 매일 같은 품질의 결과를 얻을 수 있습니다. 핵심은 pandas 한 가지만 익혀 “읽기→정리→결합→집계→저장” 루프를 만드는 것입니다.

1. 왜 파이썬인가: 반복·정확·확장

엑셀은 손이 빠르면 편하지만, 사람 손실수가 쌓일수록 오류가 늘고 재현이 어렵습니다. 파이썬은 한 번 짠 스크립트를 매일 재사용할 수 있고, 데이터가 커져도(수십만 행) 비교적 안정적으로 처리합니다. 또한 외부 시스템(쇼핑몰·결제·광고) API 연동, 이미지/텍스트 처리까지 확장이 쉬워 온라인 판매에 최적입니다.

2. 10분 셋업: 설치→첫 스크립트

  1. 파이썬 설치: 공식 사이트에서 3.x 버전 설치(Windows는 “Add to PATH” 체크).
  2. 가상환경: 프로젝트 폴더에서 python -m venv .venv → 활성화 후 pip install pandas openpyxl.
  3. 폴더 구조:
    project/
     ├─ data/       # 원천 CSV/XLSX
     ├─ output/     # 산출물
     ├─ logs/       # 로그 파일
     └─ run.py      # 메인 스크립트
첫 스크립트(복붙)
import pandas as pd
src = "data/orders.csv"
df = pd.read_csv(src)
df["order_date"] = pd.to_datetime(df["order_date"])
df = df[df["status"].eq("paid")]  # 결제완료만
df.to_excel("output/orders_paid.xlsx", index=False)

3. 실전 레시피 7가지(엑셀 대체)

3-1. VLOOKUP → merge

orders = pd.read_csv("data/orders.csv")
items  = pd.read_csv("data/items.csv")
df = orders.merge(items[["item_id","category","price"]], on="item_id", how="left")

3-2. 피벗테이블 → pivot_table

pivot = pd.pivot_table(df, values="price", index="category",
                       columns=df["order_date"].dt.date, aggfunc="sum", fill_value=0)

3-3. 중복 제거/고유값

unique_customers = df.drop_duplicates("customer_id").shape[0]
dups = df[df.duplicated(subset=["order_id","item_id"], keep=False)]

3-4. 조건부 계산(IF)

import numpy as np
df["is_weekend"] = df["order_date"].dt.dayofweek >= 5
df["ship_fee"] = np.where(df["price"]>=50000, 0, 3000)

3-5. 문자열 정리(TRIM/LOWER/REPLACE)

df["clean_name"] = (df["customer_name"].str.strip()
                                     .str.replace(r"\s+"," ", regex=True)
                                     .str.title())

3-6. 날짜 파싱·기간 필터

mask = (df["order_date"] >= "2025-08-01") & (df["order_date"] < "2025-09-01")
aug = df.loc[mask]

3-7. 그룹 요약(월간 매출·객단가)

monthly = (df.groupby(df["order_date"].dt.to_period("M"))
             .agg(sales=("price","sum"),
                  orders=("order_id","nunique"),
                  customers=("customer_id","nunique")))
monthly["aov"] = monthly["sales"] / monthly["orders"]

4. 리포트 자동 생성(엑셀/CSV/이미지)

산출물은 엑셀·CSV·PNG 차트로 저장하면 공유가 쉽습니다. 엑셀로 저장할 때 시트 여러 개를 한 파일에 넣을 수 있습니다. 간단한 시각화도 자동으로 그려서 파일로 내보내면 매일 보고서가 완성됩니다.

4-1. 다중 시트 엑셀 저장

with pd.ExcelWriter("output/report.xlsx", engine="openpyxl") as xw:
    df.to_excel(xw, sheet_name="raw", index=False)
    pivot.to_excel(xw, sheet_name="pivot")
    monthly.reset_index().to_excel(xw, sheet_name="monthly", index=False)

4-2. 간단 차트(PNG) 저장

import matplotlib.pyplot as plt
ax = monthly["sales"].plot(kind="bar", figsize=(8,3))
ax.set_title("Monthly Sales")
plt.tight_layout()
plt.savefig("output/monthly_sales.png")

4-3. 요약 텍스트 자동 작성

summary = {
  "월수": len(monthly),
  "총매출": int(monthly["sales"].sum()),
  "최고월": str(monthly["sales"].idxmax())
}
open("output/summary.txt","w",encoding="utf-8").write(str(summary))
바로 적용
  • 입력 파일명 규칙: orders_YYYYMMDD.csv로 통일.
  • 폴더 권한: data/는 읽기, output/는 쓰기.
  • 실행 로그를 파일로 남겨 재현성 확보.
주의
  • 주문·고객 데이터 등 개인정보는 암호화/마스킹 후 처리.
  • 파일 열려있으면 저장 오류 → 실행 전 엑셀 파일 닫기.
  • 수치가 비정상 급증 시 원본 파일부터 검증.

5. 스케줄링: 매일 9시 자동 실행

5-1. 스크립트 엔트리포인트

# run.py
import pandas as pd, logging, pathlib, datetime as dt
logging.basicConfig(filename="logs/run.log", level=logging.INFO, format="%(asctime)s %(message)s")
ROOT = pathlib.Path(__file__).resolve().parent
def main():
    df = pd.read_csv(ROOT/"data/orders.csv")
    df["order_date"] = pd.to_datetime(df["order_date"])
    df = df[df["status"].eq("paid")]
    df.to_excel(ROOT/"output/orders_paid.xlsx", index=False)
    logging.info("done: %s rows", len(df))
if __name__ == "__main__":
    main()

5-2. Windows 작업 스케줄러

프로그램/스크립트: C:\경로\project\.venv\Scripts\python.exe
인수 추가:       C:\경로\project\run.py
시작 위치:       C:\경로\project

5-3. macOS/Linux 크론

# 매일 09:00 실행
0 9 * * * /경로/project/.venv/bin/python /경로/project/run.py >> /경로/project/logs/cron.log 2>&1
검수 체크리스트(복붙)
  1. 원본 파일 수/열 이름이 사양과 일치하는가?
  2. 날짜/통화/문자 인코딩 오류가 없는가?
  3. 산출 파일이 덮어쓰기/버전관리 규칙을 따르는가?
  4. 로그에 오류 스택이 없는가?
  5. 개인정보는 익명화/최소 수집 원칙을 지켰는가?

자주 묻는 질문

엑셀을 아예 안 써도 되나요?

최종 공유·검토는 엑셀이 편할 수 있습니다. 다만 가공/집계를 파이썬으로 바꾸면 품질과 속도가 올라갑니다.

코딩이 처음인데 어렵지 않을까요?

pandas의 10여 개 함수만 익히면 대부분의 반복작업을 커버합니다. 위 레시피를 복붙해 구조만 바꾸며 시작하세요.

회사 보안 때문에 설치가 제한적입니다.

휴대용(포터블) 파이썬이나 사내 승인된 환경에서 가상환경을 쓰세요. 데이터는 로컬/사내 스토리지에 두고 외부 업로드를 금지합니다.

 

반응형