데이터 분석
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)
- 결측값이 있는 열을 제거(자주 사용하지 않음)