데이터/코칭스터디 13기 DataScience

[코칭스터디 13기] Data Science 2023 : 2주차 서울 종합병원 분포 확인하기 - 2) 결측치 다루기

빵감자 2023. 10. 15. 09:46
728x90
반응형

목표 : 결측치가 가장 많은 column 10개 삭제하기

순서

1. 결측치 구하기

2. 데이터 프레임 형태로 변환하여 정렬하기

3. 리스트로 만들어 삭제하기

 

출처 : https://www.boostcourse.org/study-ds112-2023

 

1. 결측치 구하기

1) isnull()

null_count = df.isnull().sum()
null_count

결측치는 isnull()로 구할 수 있다.

sum()으로 결측치의 개수를 세어 null_count에 넣어준다.

 

 

2) 시각화하기

이제 결측치를 시각화해주기 위해 plot을 사용한다.

정보가 많고, column명이 길기 때문에 세로 막대형 그래프인 barh()로 그래프를 그린다.

null_count.plot.barh(figsize=(5,7))

 

 

 


 

2. 데이터 프레임 형태로 변환하여 정렬하기

1) reset_index()

df_null_count = null_count.reset_index()
df_null_count.head()

reset_index()를 활용하면 df 형태로 변환된다. 

df_null_count.columns = ["컬럼명", "결측치수"]
df.null_count.head()

 

그리고 '결측치수'라는 새로운 칼럼을 지정해 준다.

 

 

2) sort_values()

df.null_count.sort_values(by="결측치수", ascending=False)

결측치만 보기 위해 sort_values()를 활용하여 결측치수를 기준으로 내림차순 정렬한다.

by='결측치수' -> '결측치수'라는 column을 기준으로 ascending=False -> 내림차순 한다.

결측치수가 많은 순서대로 나왔다,

df_null_count_top = df.null_count.sort_values(by="결측치수", ascending=False).head(10)

상위 10개만 뽑기 위해 head(10)을 지정하고, 이 df를 df_null_count_top이라는 변수에 넣는다.

 


 

3. 리스트로 만들어 삭제하기

NaN : Not a Number의 약자로 결측치로 보면 된다.

df["지점명"].head()

결측치의 상황을 확인한다.

drop_columns = df_null_count_top["컬럼명"].tolist()

삭제할 column의 이름을 리스트 형태로 만든다.

df[drop_columns].head()

삭제할  column을 조회한다.

 

print(df)
df = df.drop(drop_columns, axis=1)
print(df)

열을 기준으로 삭제해야 하기 때문에 axis = 1을 지정한다.

 

결측치수 상위 10개의 column을 drop 한 후, 39개였던 열이 29개가 되었다.

 

 

반응형