엑셀 파일을 정리하다 보면 값이 비어 있는 셀 때문에 필터 결과가 달라지거나, 집계가 어긋나거나, 보고용 표가 지저분해지는 일이 자주 생깁니다. 특히 완전히 빈 행만 지우면 끝나는 것이 아니라, 특정 열의 빈칸만 걸러내거나 비어 있는 값을 일정한 기준으로 채워야 하는 경우가 많습니다. 이번 글에서는 이런 문제를 파이썬으로 어떻게 정리할 수 있는지 설명하겠습니다.
빈칸 때문에 엑셀 정리가 꼬이는 이유
엑셀에서 빈칸은 단순히 “값이 없다”는 의미로 끝나지 않습니다. 실제 업무에서는 빈칸 하나 때문에 데이터 분석 결과가 달라지기도 하고, 사람이 직접 파일을 검토할 때도 판단이 흔들리기 쉽습니다. 예를 들어 주문 내역 파일에서 고객명은 있는데 연락처가 비어 있거나, 거래처 목록에서 담당자 이름만 비어 있거나, 아예 한 줄 전체가 비어 있는 경우가 섞여 있으면 정렬과 필터 결과가 예상과 달라질 수 있습니다. 이 상태로 피벗이나 요약 보고서를 만들면 누락 건이 생기고, 나중에 다시 원본을 뒤져야 하는 일이 생깁니다.
문제는 빈칸이 모두 같은 방식으로 처리되면 안 된다는 점입니다. 전체 행이 비어 있다면 지워도 되지만, 특정 열만 비어 있는 행은 남겨야 할 수도 있습니다. 반대로 어떤 경우에는 빈칸을 삭제하는 대신 “미입력”, “확인 필요”, “값 없음”처럼 기준값으로 채워 두는 편이 더 안전합니다. 실무에서는 삭제보다 표시가 더 중요한 경우도 많기 때문입니다. 예를 들어 담당자가 비어 있는 데이터를 지워 버리면 누락 원인을 추적하기 어려워집니다. 하지만 “담당자 미지정”으로 채워 두면 이후 검토와 보고가 쉬워집니다.
여기서 중요한 것은 엑셀에서 눈으로 보이는 빈칸과 파이썬이 인식하는 빈칸이 완전히 같지 않을 수 있다는 점입니다. 어떤 셀은 정말 비어 있고, 어떤 셀은 공백 문자만 들어 있으며, 어떤 셀은 수식 결과로 비어 보일 수도 있습니다. 그래서 단순히 행을 삭제하는 방식만 외우기보다, 먼저 어떤 빈칸을 정리할 것인지 기준을 정하는 것이 중요합니다. 저는 이 작업을 할 때 항상 세 단계로 나눠서 생각하는 편입니다. 첫째, 완전히 비어 있는 행을 지울지 판단합니다. 둘째, 특정 열 기준으로 비어 있는 행만 제거할지 결정합니다. 셋째, 남겨야 하는 빈값은 어떤 문구나 값으로 채울지 정리합니다. 이 순서만 잡혀도 엑셀 정리 작업이 훨씬 안정적으로 진행됩니다.

파이썬으로 빈칸 행 제거하고 필요한 값만 채우기
이런 작업은 파이썬의 pandas로 비교적 간단하게 정리할 수 있습니다. 핵심은 dropna()와 fillna()를 상황에 맞게 구분해서 쓰는 것입니다. 먼저 가장 기본적인 흐름은 엑셀 파일을 불러온 뒤, 전체가 비어 있는 행을 제거하고, 특정 열 기준으로 다시 한 번 필요한 정리를 하는 방식입니다.
import pandas as pd
엑셀 파일 불러오기
df = pd.read_excel("orders.xlsx")
1. 모든 값이 비어 있는 행 제거
df = df.dropna(how="all")
2. 고객명 열이 비어 있는 행 제거
df = df.dropna(subset=["고객명"])
3. 담당자 열의 빈값은 '미지정'으로 채우기
df["담당자"] = df["담당자"].fillna("미지정")
4. 연락처 열의 빈값은 '확인 필요'로 채우기
df["연락처"] = df["연락처"].fillna("확인 필요")
결과 저장
df.to_excel("orders_cleaned.xlsx", index=False)
이 코드에서 먼저 봐야 할 것은 dropna(how="all")입니다. 이 구문은 한 줄 전체가 비어 있는 행만 삭제합니다. 실무 파일에는 중간중간 빈 줄이 끼어 있는 경우가 많은데, 이런 행을 먼저 제거해 주면 이후 정렬이나 집계가 훨씬 깔끔해집니다. 그다음 dropna(subset=["고객명"])은 특정 열을 기준으로 빈칸을 제거하는 방식입니다. 즉, 고객명이 없는 데이터는 핵심 정보가 빠졌다고 판단하고 제외하는 흐름입니다. 이 부분은 파일마다 기준 열 이름만 바꾸면 바로 응용할 수 있습니다.
그다음이 더 중요합니다. 빈칸을 다 지우는 것이 아니라 남겨야 하는 열은 fillna()로 값을 채워야 합니다. 예를 들어 담당자가 아직 배정되지 않은 데이터는 삭제 대상이 아니라 관리 대상입니다. 그래서 “미지정”처럼 눈에 잘 띄는 값으로 채워 두면 검토가 쉬워집니다. 연락처처럼 추후 확인이 필요한 값은 “확인 필요”로 넣어 두면 좋습니다. 이렇게 하면 보고서나 필터에서 바로 걸러낼 수 있습니다. 사람이 엑셀에서 직접 빈칸을 찾는 것보다 훨씬 빠르고 실수도 줄어듭니다.
추가로 많이 놓치는 부분이 공백 문자입니다. 셀 안에 스페이스만 들어 있는 경우에는 겉보기에는 빈칸처럼 보여도 파이썬이 값이 있다고 판단할 수 있습니다. 이런 경우에는 먼저 공백을 정리한 뒤 빈값 처리를 하는 것이 안전합니다.
import pandas as pd
df = pd.read_excel("orders.xlsx")
문자열 열의 앞뒤 공백 제거
df = df.apply(lambda col: col.str.strip() if col.dtype == "object" else col)
빈 문자열을 실제 결측값으로 변환
df = df.replace("", pd.NA)
전체 빈 행 제거
df = df.dropna(how="all")
특정 열 기준 빈칸 제거
df = df.dropna(subset=["고객명"])
필요한 열 채우기
df["담당자"] = df["담당자"].fillna("미지정")
df["연락처"] = df["연락처"].fillna("확인 필요")
df.to_excel("orders_cleaned.xlsx", index=False)
이 코드의 핵심은 str.strip()으로 공백을 정리하고, replace("", pd.NA)로 빈 문자열을 결측값으로 바꾸는 부분입니다. 초보자가 자주 막히는 이유도 여기에 있습니다. 눈으로는 빈칸 같은데 왜 제거가 안 되는지 궁금할 때, 실제로는 공백 한 칸이 들어가 있는 경우가 적지 않습니다. 그래서 파일 상태가 애매할수록 이 전처리 과정을 먼저 넣는 편이 훨씬 안전합니다.

빈칸 정리는 삭제보다 기준을 세우는 작업입니다
엑셀 빈칸 정리는 단순히 지우는 기술이 아니라, 데이터를 어떤 기준으로 남기고 어떤 기준으로 정리할지 결정하는 작업입니다. 이 차이를 이해하면 파이썬 자동화의 품질이 달라집니다. 처음에는 dropna()와 fillna()만 익혀도 충분하지만, 실제로 써 보면 중요한 것은 함수 자체보다 적용 순서라는 점을 알게 됩니다. 보통은 전체 빈 행 제거, 핵심 열 기준 빈칸 제거, 남겨야 하는 빈값 채우기 순으로 정리하는 것이 가장 실무적입니다.
이 흐름이 익숙해지면 이후 확장도 자연스럽습니다. 예를 들어 다음 단계에서는 특정 열에 빈칸이 있는 데이터만 따로 모아 검토용 파일로 저장할 수 있습니다. 또는 날짜 열, 금액 열처럼 중요한 항목만 기준으로 품질 체크를 할 수도 있습니다. 빈칸을 무조건 없애는 방식보다, 어떤 빈칸이 문제이고 어떤 빈칸은 관리 대상인지 구분하는 습관이 생기면 데이터 정리 속도와 정확도가 함께 올라갑니다.
실무에서 특히 추천하는 방법은 원본 파일을 바로 덮어쓰지 않는 것입니다. 먼저 orders_cleaned.xlsx처럼 별도 파일로 저장해서 결과를 확인한 뒤 최종본으로 사용하는 편이 안전합니다. 또 열 이름이 파일마다 조금씩 다를 수 있으므로 고객명, 담당자, 연락처 같은 부분은 실제 사용하는 열 이름으로 바꿔야 합니다. 이 부분만 잘 맞추면 초보자도 바로 따라 할 수 있습니다.
결국 빈칸 정리는 보고서를 깔끔하게 만들기 위한 작업이 아니라, 이후 분석과 판단이 흔들리지 않게 만드는 기초 작업입니다.
'엑셀 자동화' 카테고리의 다른 글
| 파이썬 여러 조건 행 추출법 (0) | 2026.04.05 |
|---|---|
| 파이썬 사용 엑셀에서 특정 값 포함 행 찾기 (1) | 2026.04.05 |
| 파이썬 사용 엑셀에서 날짜 조건 자동화 방법 (0) | 2026.04.05 |
| 파이썬 엑셀 조건행 추출 및 저장 자동화 (0) | 2026.04.04 |
| 파이썬 엑셀 중복 데이터 제거 방법 (0) | 2026.04.04 |