엑셀 정렬·필터 반복 작업 끝! 파이썬으로 데이터 자동 정렬·필터링하기

엑셀 정렬·필터 반복 작업 끝! 파이썬으로 데이터 자동 정렬·필터링하기 (완성 코드 공개)

파이썬으로 엑셀 데이터를 자동으로 정렬하고 필터링하는 모습


"이번 달 매출 상위 10개 거래처만 뽑아서 별도 파일로 저장해주세요", "미납 거래처만 필터링해서 팀장님께 공유해주세요"…

엑셀을 열고, 필터를 걸고, 정렬하고, 복사해서 새 파일에 붙여넣고, 저장하는 작업을 매주 반복하고 있지는 않으신가요? 데이터가 바뀔 때마다 처음부터 다시 해야 하고, 조건이 조금이라도 바뀌면 또 다시 손으로 작업해야 합니다. 파이썬을 한 번만 세팅해두면 조건을 바꾸는 것만으로 원하는 데이터를 자동으로 추출하고 정렬해서 새 파일로 저장할 수 있습니다.


1단계: 준비물 설치

파이썬이 설치되어 있어야 합니다. 없다면 python.org에서 최신 버전을 받아 설치하세요. 설치 시 반드시 "Add Python to PATH"에 체크해야 합니다.

터미널(윈도우: CMD 또는 파워셸)을 열고 아래 명령어를 실행하세요:

pip install pandas openpyxl

pandas는 엑셀 데이터를 표 형태로 읽고, 정렬·필터링·저장하는 모든 작업을 처리합니다. openpyxl은 .xlsx 파일을 읽고 쓰는 엔진입니다.

💡 이 코드로 할 수 있는 것: 엑셀 파일을 읽어 특정 조건(금액 이상, 특정 지역, 날짜 범위 등)으로 데이터를 필터링하고, 원하는 열 기준으로 정렬한 뒤 새 엑셀 파일로 저장합니다. 조건만 바꾸면 어떤 형태의 데이터도 처리할 수 있습니다.

2단계: 엑셀 파일 준비

아래와 같은 형태의 엑셀 파일이 있다고 가정합니다. 1행은 헤더(열 이름)이고, 2행부터 실제 데이터가 입력되어 있으면 됩니다.

거래처명      지역    담당자   매출금액   납부상태
----------------------------------------------
A주식회사    서울    홍길동   5,200,000  완납
B기술연구소  부산    김철수     980,000  미납
C물산        서울    이영희   3,100,000  완납
D상사        대전    박민준   7,400,000  미납
E무역        서울    최수진   1,250,000  완납

열 이름과 데이터 형태는 본인 파일에 맞게 자유롭게 바꿀 수 있습니다.


3단계: 완성 코드

아래 코드를 그대로 복사해서 메모장에 붙여넣고, sort_filter.py로 저장하세요. 저장 시 파일 형식은 "모든 파일", 인코딩은 UTF-8로 설정합니다.

import pandas as pd
from pathlib import Path

# ① 설정: 파일 경로
INPUT_PATH  = r"C:\Users\내이름\Desktop\거래처_현황.xlsx"   # ← 원본 엑셀 경로
OUTPUT_PATH = r"C:\Users\내이름\Desktop\거래처_필터결과.xlsx" # ← 저장할 경로

# ② 설정: 필터 조건 (필요한 조건만 주석 해제해서 사용)
FILTER_COLUMN  = "납부상태"    # ← 필터 기준 열 이름
FILTER_VALUE   = "미납"        # ← 찾을 값 (이 값과 같은 행만 추출)

# ③ 설정: 정렬 조건
SORT_COLUMN    = "매출금액"    # ← 정렬 기준 열 이름
SORT_ASCENDING = False         # ← False: 내림차순(큰 값 먼저) / True: 오름차순

# ④ 엑셀 읽기
df = pd.read_excel(INPUT_PATH, engine="openpyxl")
print(f"  ✔ 데이터 로드 완료: 전체 {len(df)}행")

# ⑤ 필터링
filtered = df[df[FILTER_COLUMN] == FILTER_VALUE].copy()
print(f"  ✔ 필터링 완료: '{FILTER_VALUE}' 해당 {len(filtered)}행 추출")

# ⑥ 정렬
sorted_df = filtered.sort_values(by=SORT_COLUMN, ascending=SORT_ASCENDING)
sorted_df = sorted_df.reset_index(drop=True)
print(f"  ✔ 정렬 완료: '{SORT_COLUMN}' 기준 {'오름차순' if SORT_ASCENDING else '내림차순'}")

# ⑦ 새 엑셀 파일로 저장
sorted_df.to_excel(OUTPUT_PATH, index=False)
print(f"\n✅ 완료! {len(sorted_df)}행 저장 → {OUTPUT_PATH}")

4단계: 실행 방법

  1. 코드 ① 설정의 INPUT_PATH에 원본 엑셀 파일 경로를 입력합니다.
  2. 코드 ② 설정의 FILTER_COLUMNFILTER_VALUE에 필터 기준 열 이름과 찾을 값을 입력합니다.
  3. 코드 ③ 설정의 SORT_COLUMN에 정렬 기준 열 이름을, SORT_ASCENDING에 정렬 방향을 입력합니다.
  4. 터미널에서 아래 명령어로 실행합니다:
python sort_filter.py

정상 실행 시 터미널에 이렇게 출력됩니다:

  ✔ 데이터 로드 완료: 전체 120행
  ✔ 필터링 완료: '미납' 해당 23행 추출
  ✔ 정렬 완료: '매출금액' 기준 내림차순

✅ 완료! 23행 저장 → C:\Users\내이름\Desktop\거래처_필터결과.xlsx

원본 파일은 그대로 유지되고, 조건에 맞는 데이터만 추출·정렬된 새 엑셀 파일이 생성됩니다.


5단계: 자주 발생하는 오류와 해결법

오류 1: KeyError: '납부상태'

FILTER_COLUMN에 입력한 열 이름이 엑셀 헤더와 정확히 일치하지 않을 때 발생합니다. 엑셀 1행의 열 이름을 다시 확인하세요. 공백이나 오타가 한 글자라도 다르면 오류가 납니다.

오류 2: 필터링 결과가 0행으로 나옴

FILTER_VALUE에 입력한 값이 엑셀 데이터와 정확히 일치하지 않는 경우입니다. 예를 들어 엑셀에 "미납 "처럼 뒤에 공백이 붙어 있으면 "미납"과 다른 값으로 인식됩니다. 아래 코드를 필터링 전에 추가해 공백을 제거하세요:

df[FILTER_COLUMN] = df[FILTER_COLUMN].astype(str).str.strip()

오류 3: 숫자 열 정렬이 예상과 다르게 됨

매출금액 열에 쉼표(,)가 포함된 텍스트 형태로 저장된 경우 숫자가 아닌 문자로 인식되어 정렬이 이상하게 됩니다. 아래 코드를 정렬 전에 추가해 숫자로 변환하세요:

filtered[SORT_COLUMN] = pd.to_numeric(filtered[SORT_COLUMN].astype(str).str.replace(",", ""), errors="coerce")

응용: 조건을 여러 개 동시에 적용하고 싶다면

필터 조건을 두 개 이상 동시에 적용할 수 있습니다. 코드 ⑤ 필터링 부분을 아래처럼 교체하면 됩니다.

# 예시 1: 미납이면서 매출금액이 1,000,000 이상인 행만 추출 (AND 조건)
filtered = df[
    (df["납부상태"] == "미납") &
    (df["매출금액"] >= 1000000)
].copy()

# 예시 2: 서울 또는 부산 거래처만 추출 (OR 조건)
filtered = df[
    df["지역"].isin(["서울", "부산"])
].copy()

# 예시 3: 매출금액 상위 10개 추출 (상위 N개)
filtered = df.nlargest(10, "매출금액").copy()
💡 이전 게시글과 결합하면: 필터링·정렬된 결과를 차트 자동 저장 편의 코드와 연결하면 조건에 맞는 데이터로 차트를 자동 생성하고, 이메일 자동 발송 편과 결합하면 결과 파일을 담당자에게 자동으로 발송하는 것도 가능합니다.

핵심 요약

  • 준비물: Python + pandas + openpyxl 설치 (pip install pandas openpyxl)
  • 설정: 파일 경로, 필터 기준 열·값, 정렬 기준 열·방향만 수정
  • 실행: 터미널에서 python sort_filter.py 입력
  • 결과: 조건에 맞는 데이터만 추출·정렬된 새 엑셀 파일 자동 생성, 원본 파일 유지

이 코드를 응용하면 날짜 범위 필터, 빈 값 제거, 중복 행 제거까지 다양한 데이터 정제 작업을 자동화할 수 있습니다.

이 블로그의 인기 게시물

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

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

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