728x90
반응형
목표 : 결측치가 가장 많은 column 10개 삭제하기
순서
1. 결측치 구하기
2. 데이터 프레임 형태로 변환하여 정렬하기
3. 리스트로 만들어 삭제하기
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개가 되었다.
끝
반응형