Data Science(w. naver boostcourse)

6. 결측치 다루기

테크MANIA 2024. 10. 4. 12:27
반응형

결측치란?


결측치란 값이 없거나, NaN으로 나타나는 데이터를 의미합니다.

데이터에 따라 다르지만, 여기서는 따로 데이터가 없는 값으로 보기에 해당 column은 제외하는 방식으로 데이터 전처리 과정을 갖는다.

 

df.isnull() 을 통해 결측치가 존재하는 컬럼을 구한다. 이때 isnull은 해당 데이터가 결측치라면 True를 반환한다.

null_count = df.isnull().sum() 을 통해 True로 추출된 결측치 데이터들의 총 합을 구하고 변수에 저장한다. (boolean indexing을 통해 True는 1과 동일함)

이제 null_count 변수를 출력해보면,

이와 같이 결측치가 없는 데이터는 0으로 출력되고 결측치가 있는 데이터는 결측치의 개수가 출력된다.

결측치 시각화하기


결측치를 저장한 null_count 변수에 plot을 통해 시각화를 해봅니다.

따로 시각화 그래프를 지정하지 않고 .plot() 으로 사용하면 가장 기본적인 line 그래프로 그려줍니다.

plot. 에서 tab키를 누르면 시각화 가능한 다양한 그래프를 확인할 수 있습니다.

이때, 아래 글자들이 겹쳐서 잘 안보이기에 기울기를 추가합니다. 

null_count.plot(rot=60) : 아래 글자에 60도의 기울기를 추가하여 회전시켜서 대각선으로 글자가 겹차지 않게 표시하는 방법입니다.


1. bar 그래프: 막대 그래프로 그려줍니다.

barh()를 통해 막대 그래프를 세로로 그리면 column 값을 확인하기 더 수월합니다.

여기서 figsize(5,7) 과 같이 그래프의 사이즈를 지정하여 글자들이 너무 겹쳐서 안보이는 이슈를 해결할 수도 있습니다

데이터 프레임 형태로 변형


1. 인덱스 초기화

df_null_count = null_count.reset_index

.reset_index를 통해 결측치를 담은 시리즈 데이터를 데이터 프레임 형식으로 변환할 수 있습니다.

2. 컬럼명 지정

데이터 프레임 형식으로 변환된 데이터의 컬럼명을 직접 지정

df_null_count.columns = ["컬럼명","결측치수"]

이렇게 데이터 프레임 형식으로 변환된 자료에서 결측치만 확인하기 위해서는

.sort_values()를 활용하여 기준이 될 column값과 오름차순/내림차순을 설정한다.

< 지점명이라는 컬럼은 거의 대부분의 데이터에서 값이 없다는 것을 확인할 수 있다 = 사용하지 않는 값임을 유추 가능

(상위/하위 N개의 데이터만 보고싶으면 .head(N) / .tail(N) 사용)

특정 Column 출력하기


NaN: Not a Number의 약자로 결측치를 의미함.

출력하고 싶은 컬럼명을 대괄호에 문자열로 넣어서 지정하면 해당 컬럼의 데이터만 출력해서 확인이 가능

여기서 결측치는 제외하고 유효한 값이 들어있는 row들만 출력하는 방법은 .dropna()를 사용하는 것

 

필요한 column이 아닌 경우 삭제를 통해 데이터를 전처리 한다.

결측값이 많은 row들은 사실상 활용하기 어려운 데이터기에 제거 > df_null_count 데이터 프레임에서 .sort_values를 통해 "결측값"을 기준으로 내림차순하면 결측치가 가장 많은 데이터 순서대로 확인이 가능합니다.

그렇게 조건을 지정해서 추출한 column들을 df_null_count_top에 저장하고 이를 .tolist() 를 통해 리스트 형식으로 변환시켜주면, 제거해야 되는 column들을 리스트 형식으로 추출이 가능합니다.

drop() 함수는 열을 기준으로 삭제하기에(column) axis = 1을 지정. 행(row)을 삭제하기 위해서는 0으로 지정.

df_seoul["시군구명"].value_counts()    # 해당 데이터의 개수 카운트
df_seoul["시군구명"].info()            # 해당 column의 메타데이터(데이터 타입, 사이즈 등) 확인
df_seoul["시군구명"].unique().tolist() # 중복을 없애고 리스트로 변환
반응형