데이터 분석

2-4. 결측값(Null, NaN)

HJ76 2023. 6. 8. 17:16

결측값(Null, NaN)

  • Null은 비어있는 값, 결측값이라고 부름
  • pandas에서는 NaN(Not a Number)로 표기 된 것은 모두 결측값으로 취급
  • 데이터 분석에서 상당히 중요함

 

isna(), isnull()

- 결측값을 판단해주는 함수

- boolean 형태로 출력됨

df.isna()

 

df.isnull()

 

# 그룹 컬럼의 결측값 판단
df["group"].isna()

 

# 그룹 컬럼이 결측값인 행 출력
df[df["group"].isna()]

 

# 그룹 컬럼이 결측값인 행의 이름 출력
df["name"][df["group"].isna()]

 

notnull()

- 결측값이 아닌 데이터를 확인하는 데 사용

-  isnull(), isna() 메소드의 반대 기능

 

# 그룹 컬럼의 값이 결측값이 아닌 행 출력
df[df["group"].notnull()]

 

# 그룹이 있는 연예인의 이름, 키 혈액형을 loc를 사용하여 출력
df.loc[df["group"].notnull(),["name", "height", "blood"]]

 

fillna()

- 결측값을 채워주는 함수(굉장히 많이 사용)

# 키가 결측값인 경우, 0으로 채워줌
df["height"].fillna(0)

 

# inplace = True를 통해 결과 반영(기본값 False)
df["height"].fillna(0, inplace = True)

print(df)

 

# 원래 데이터 프레임으로 복구
df = pd.read_csv("http://bit.ly/ds-korean-idol")

 

copy()

- dataframe을 복사하는 메소드

df2 = df.copy()

print(df2)

 

# 평균값 구하기
height = df2["키"].mean()
height # 175.7923076923077

# fillna()를 이용하여 키가 결측값인 경우, 평균키로 채워줌
df2["키"] = df2["키"].fillna(height)

df2["키"]

 

df2 = df.copy()

# 키의 메디안 값(중위수)
height = df2["키"].median()
height # 177.0

# 키가 결측값인 경우, 메디안 값으로 채워줌
df2["키"] = df2["키"].fillna(height)
df2["키"]

 

dropna()

- 결측값이 있는 행을 제거

- 결측값이 하나라도 있는 경우 행을 삭제

 

df2.dropna()

 

dropna(axis=1)

- 결측값이 있는 열을 제거(자주 사용하지 않음)