빈 행 삭제하기 : dropna()

30 P
QUESTION 06 #282
데이터프레임에서 빈칸(NaN)이 포함된 행을 모두 제거하는 코드를 완성하세요.
main.py
import pandas as pd
import numpy as np

df = pd.DataFrame({
    '이름': ['민수', '영희', '지우'],
    '점수': [90, np.nan, 85]
})

# 빈 칸(NaN)가 하나라도 포함된 행을 삭제합니다.
df2 = df.()

print(df2)
실행 결과 예시
   이름    점수
0  민수  90.0
2  지우  85.0
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

dropna()로 결측값이 있는 행 삭제하기

결측값(NaN)을 채우는 대신, 해당 행 자체를 통째로 삭제하는 방법입니다.

기본 문법

df2 = df.dropna()

동작 과정

df = pd.DataFrame({
    '이름': ['민수', '서희', '지연'],
    '점수': [90, np.nan, 85]
})
df2 = df.dropna()
삭제 전:              삭제 후:
   이름    점수          이름    점수
0  민수  90.0       0  민수  90.0
1  서희   NaN   →   (삭제됨)
2  지연  85.0       2  지연  85.0
                    ↑ 인덱스 2 유지

인덱스 번호 유지

삭제 후 인덱스가 0, 2로 띄엄띄엄 남습니다. 연속 번호로 바꾸려면:

df2 = df.dropna().reset_index(drop=True)
#   이름    점수
# 0  민수  90.0
# 1  지연  85.0  ← 인덱스가 0, 1로 재설정

fillna() vs dropna() 비교

비교 fillna() dropna()
동작 빈 칸을 값으로 채움 빈 칸이 있는 행을 삭제
데이터 손실 없음 있음 (행이 사라짐)
적합한 상황 대체값이 명확할 때 결측 데이터가 불필요할 때

dropna() 옵션

코드 설명
df.dropna() NaN이 하나라도 있는 행 삭제
df.dropna(how='all') 모든 값이 NaN인 행만 삭제
df.dropna(subset=['점수']) '점수' 열에 NaN이 있는 행만 삭제

💡 핵심: 데이터가 충분히 많고 결측 비율이 낮을 때는 dropna()가 간편합니다.