Menu
CoddyTech

결측값

Coddy Machine Learning 여정의 데이터와 시각화 섹션에 포함된 레슨. 60개 중 45번째.

실제 데이터에는 결측값이 있습니다. 센서가 고장 나거나 퀴즈를 놓칠 수 있습니다. pandas는 비어 있는 각 셀을 "숫자가 아님"을 뜻하는 NaN으로 표시합니다:

학생 4명과 퀴즈 2개가 있는 표로, 비어 있는 셀 3개가 NaN으로 표시됨: Ben은 quiz1을 놓쳤고, Cy와 Dee는 quiz2를 놓쳤습니다. 아래에는 열별 결측값 개수가 표시됨: 0, 1, 2

대부분의 모델은 NaN을 처리하지 못하므로, 먼저 결측값의 개수를 세세요. .isna()는 각 결측값을 True로 표시하고, .sum()은 그 개수를 셉니다.

scores = pd.DataFrame({
    "name": ["Ana", "Ben", "Cy", "Dee"],
    "quiz1": [8, np.nan, 7, 9],  # np.nan은 누락된 값입니다
    "quiz2": [6, 5, np.nan, np.nan],
})
print(scores.isna().sum())

다음이 출력됩니다:

name     0
quiz1    1
quiz2    2
dtype: int64

그런 다음 선택하세요: dropna()는 빈칸이 있는 모든 행을 삭제하고, fillna(0)은 각 빈칸에 0을 씁니다. 둘 다 새 테이블을 반환하므로 저장하세요.

통계에서는 NaN을 건너뜁니다. quiz1의 평균은 확인된 세 점수로 계산한 8.0입니다.

challenge icon

챌린지

중급

피트니스 트래커에서 일부 측정값이 tracker.csv에 기록되지 않았습니다. 학습에 앞서, 결측값을 처리하는 각 방법이 평균 sleep에 어떤 영향을 주는지 확인해 보세요. 시작 코드는 채우기에 사용할 값인 hours를 읽습니다.

  1. 각 열의 결측값 개수를 출력하세요.
  2. 결측값을 건너뛴 경우, 어느 열에도 결측값이 없는 날짜만 사용한 경우, 결측값을 hours로 채운 경우의 평균 수면 시간을 각각 소수점 2자리까지 반올림해 출력하세요.

다른 트래커와 8을 사용하면:

day      0
steps    1
sleep    2
water    0
dtype: int64
Skipping gaps: 6.9
Complete days only: 7.0
Gaps filled with 8.0: 7.21

직접 해보기

import pandas as pd

tracker = pd.read_csv("tracker.csv")
hours = float(input())

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

데이터와 시각화의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러