PROGRESS
6 / 9
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
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)
HINT
힌트: 떨어뜨리다(Drop)와 빈 칸(NA)를 합친 이름의 함수는 dropna()입니다.
실행 결과 예시
이름 점수 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()가 간편합니다.