40대 비전공자 직장인의 파이썬 독학기 8편: 파이썬 엑셀 빈칸 없애기 (결측치 처리와 fillna)

지난 7편에서는 openpyxl 라이브러리를 활용하여 폴더 안에 흩어져 있는 수십 개의 엑셀 파일을 병합하고 파이썬 엑셀 빈칸 없애기를 준비하는 마법 같은 기술을 구현했습니다.”. 손목이 시큰거리도록 복사하고 붙여넣던 단순 노가다에서 드디어 해방되셨을 겁니다.

하지만 실무는 항상 예상치 못한 복병을 숨기고 있습니다. 수십 개의 월별, 현장별 방역 점검 대장을 하나로 멋지게 합쳐놓고 보니, 파이썬이 갑자기 에러를 뿜어내며 멈춰버리는 현상을 겪게 됩니다. 원인은 바로 직원들이 바쁘다는 핑계로 입력하지 않고 비워둔 ‘빈칸(결측치, Missing Value)’ 때문입니다.

오늘 8편에서는 데이터 분석의 강력한 무기인 pandas(판다스)를 새롭게 도입하여, 이 지긋지긋한 파이썬 엑셀 빈칸 없애기 방법과 빈칸을 안전하게 다른 글로 채워 넣는 데이터 정제(전처리) 기술을 완벽하게 마스터해 보겠습니다.

결측치가 포함되어 파이썬 엑셀 빈칸 없애기가 필요한 방역 대장 실무 데이터
대체 텍스트: 결측치가 포함되어 파이썬 엑셀 빈칸 없애기가 필요한 방역 대장 실무 데이터

1. 판다스(pandas) 도입과 빈칸(결측치) 확인하기

그동안 6편과 7편에서 사용했던 openpyxl이 엑셀의 ‘셀’ 하나하나를 제어하는 정밀한 조각칼이었다면, 오늘부터 사용할 pandas(판다스)는 거대한 엑셀 표(데이터프레임) 전체를 한 번에 싹쓸이로 다루는 포크레인이라고 생각하시면 됩니다. 데이터 정제에는 판다스가 압도적으로 유리합니다.

먼저, 파이썬에게 “우리가 합쳐놓은 이 거대한 마스터 엑셀 파일 안에 빈칸이 도대체 몇 개나 있는지 찾아봐!”라고 명령해 보겠습니다.

Python

import pandas as pd

# 1. 7편에서 합쳐둔 마스터 엑셀 파일 불러오기
file_path = r"C:\Users\Admin\Desktop\최종_통합방역대장.xlsx"
df = pd.read_excel(file_path)

# 2. 각 열(Column)마다 빈칸이 몇 개인지 통계 내기
print(df.isnull().sum())

위 코드를 실행하면 터미널 창에 다음과 같이 출력됩니다.

현장명 : 0 담당자 : 3 점검상태 : 0 비고 : 25 dtype: int64

“아하! 담당자 칸에 3개, 비고 칸에 25개의 빈칸이 뚫려있구나!” isnull()은 “비어있니?”라고 묻는 함수이고, sum()은 “비어있는 것들의 개수를 전부 더해봐”라는 뜻입니다. 수천 줄의 엑셀을 눈으로 훑을 필요 없이 단 3줄의 코드로 데이터의 건강 상태를 진단했습니다.

2. 파이썬 엑셀 빈칸 없애기: 과감하게 행(Row) 통째로 날리기

결측치를 확인했다면 이제 처리를 해야 합니다. 첫 번째 방법은 가장 화끈하고 직관적인 삭제입니다. “담당자 이름조차 적지 않은 엉터리 데이터는 분석할 가치도 없어! 그 줄(행)은 싹 다 지워버려!”라고 할 때 사용합니다.

Python

# 빈칸(NaN)이 단 하나라도 포함된 가로줄(Row)을 모두 삭제합니다.
clean_df = df.dropna()

# 결과를 새로운 엑셀 파일로 저장합니다.
clean_df.to_excel(r"C:\Users\Admin\Desktop\정제완료_방역대장.xlsx", index=False)

dropna() 라는 마법의 함수 하나만 쓰면, 판다스가 알아서 빈칸이 있는 가로줄을 족집게처럼 찾아내어 깔끔하게 도려냅니다. 엑셀에서 일일이 빈칸을 찾아 우클릭하고 ‘행 삭제’를 누르던 과거와는 완전히 이별입니다.

pandas의 dropna 함수를 활용한 파이썬 엑셀 빈칸 없애기 실행 결과
대체 텍스트: pandas의 dropna 함수를 활용한 파이썬 엑셀 빈칸 없애기 실행 결과

3. 실무 꿀팁: 빈칸을 지우지 않고 기본값으로 채워 넣기 (fillna)

하지만 실무에서는 빈칸이 있다고 해서 그 줄을 통째로 날려버리면 대형 사고가 나는 경우가 더 많습니다. ‘비고’ 란을 비워두었다고 해서 그날 현장에 출동했던 점검 기록 자체를 삭제해 버리면 급여나 청구 비용에 문제가 생기니까요.

이럴 때는 지우는 대신 “비어있는 칸에는 무조건 ‘특이사항 없음’이라고 채워 넣어라”라고 명령하는 것이 훨씬 안전하고 현명한 방법입니다.

Python

# '비고' 열의 빈칸(NaN)을 찾아 '특이사항 없음'이라는 텍스트로 덮어씁니다.
# inplace=True 를 써야 원본 데이터에 바로 적용됩니다!
df['비고'].fillna('특이사항 없음', inplace=True)

# '담당자' 열의 빈칸은 '미정'으로 일괄 채워 넣습니다.
df['담당자'].fillna('미정', inplace=True)

# 확인해보기
print(df.isnull().sum())

🔥 초보자가 100% 겪는 함정 (inplace=True): 초보 시절 가장 많이 하는 실수가 바로 inplace=True를 빼먹는 것입니다. 분명히 fillna('특이사항 없음')을 썼는데 엑셀 파일을 열어보면 여전히 텅 비어있어서 당황하게 됩니다. 파이썬은 매우 조심성이 많아서, 우리가 명령을 내려도 ‘임시로 보여주기만’ 할 뿐 원본(df)을 함부로 바꾸지 않습니다. “보여주기만 하지 말고 원본 엑셀 데이터에 진짜로 덮어써버려!”라고 쐐기를 박는 확정 버튼이 바로 inplace=True입니다.

4. 글을 마치며: 무결점 데이터를 향하여

오늘 배운 파이썬 엑셀 빈칸 없애기(dropna)와 빈칸 채워 넣기(fillna)는 IT 업계에서 데이터 분석가들이 가장 많은 시간을 쏟는다는 ‘데이터 전처리(정제)’의 핵심 기술입니다.

이제 우리는 7편에서 여러 개의 파일을 하나로 뭉치고, 8편에서 그 안의 지저분한 빵꾸(빈칸)들까지 완벽하게 수선해 냈습니다. 에러가 날 틈이 없는 무결점 마스터 데이터가 완성된 것입니다.

다음 9편에서는 이렇게 완벽하게 정리된 엑셀 데이터를 바탕으로, 우리가 원하는 조건(예: 특정 지역, 특정 해충 발견 현장)만 쏙쏙 뽑아내는 ‘고급 필터링(조건 추출)’ 기술을 다루어 보겠습니다. 40대 아저씨의 코딩 도전은 계속됩니다!

“앞으로도 현장 실무에 즉시 적용할 수 있는 유용한 파이썬 자동화 팁과 데이터 분석 노하우를 꾸준히 공유하겠습니다. 많은 기대 부탁드립니다.”

(이전 글: [40대 비전공자 직장인의 파이썬 독학기 7편: 폴더 내 수십 개 엑셀 파일 병합하기] 보러 가기)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다