개발은 처음이라 개발새발

dropna() 파이썬 누락 데이터 제거 [python/seaborn] 본문

파이썬/판다스

dropna() 파이썬 누락 데이터 제거 [python/seaborn]

leon_choi 2022. 7. 21. 00:01
반응형

https://data-so-hard.tistory.com/31

 

isnull(), notnull() 누락 데이터 확인 [python/seaborn]

엑셀을 가지고 데이터를 다룰 때 가장 불편한 점이 있다면 데이터의 누락과 오류 같은 문제들을 바로 찾기가 쉽지 않다는 점입니다. 이번 시간에는 파이썬을 통해 누락 데이터에 대해 알아보는

data-so-hard.tistory.com

지난 편에서는 파이썬의 간단한 코드를 통해 엑셀에 저장된 데이터 중 누락된 부분을 확인해봤는데요. .이번 시간에는 이 누락된 데이터를 제거하는 방법에 대해 알아보도록 하겠습니다. 우선 지난 시간에 했던 코드를 들고 오겠습니다. 

import seaborn as sns

df= sns.load_dataset('titanic')

#누락 데이터 확인
print(df.isnull())

print('\n')

#누락 데이터 개수 확인

print(df.isnull().sum(axis=0))

지난 편에서 확인 결과 "deck" 컬럼에 무려 688개의 누락 데이터가 존재했습니다. 총 891개의 데이터 중 688개의 데이터가 누락됐다는 건 사실상 데이터 분석을 진행하는 과정에서 필요가 없는 데이터라고 볼 수 있는데요. 이럴 때는 "deck"컬럼 자체를 지우는 것이 분석에 있어 현명하다고 할 수 있습니다. 데이터를 제거할 때는 dropna() 매소드를 사용합니다. 그리고 "thresh=" 옵션을 사용하는 방법도 있는데요. "thresh= 숫자" 옵션은 해당 숫자 이상으로 NaN 값이 발생한 것을 삭제할 수 있습니다. 그러면 코드를 적용해 deck 컬럼이 잘 삭제 됐는지 확인해보겠습니다.  

import seaborn as sns

df= sns.load_dataset('titanic')

# print(df.head())

# print(df.info())

#누락 데이터 확인
print(df.isnull())

print('\n')

#누락 데이터 개수 확인

print(df.isnull().sum(axis=0))

#deck 컬럼 제거하기
df_thresh = df.dropna(axis = 1, thresh = 500)
print('\n')
print(df_thresh.columns)

deck 컬럼이 잘 삭제된 것을 확인했습니다. 이번에는 두번째로 결측이 많은 age 컬럼에 대해 조치를 취해보려고 하는데요. 이번에는 컬럼을 아예 삭제하는 것이 아니라 age 컬럼에 NaN값이 표시된 행만 제거해보겠습니다. 이번에도 dropna()매소드를 사용하지만 옵션을 다른 것을 써보겠습니다. 우선 subset= 에 age 컬럼을 지정하고 how= 옵션을 사용하겠습니다. how의 경우 how=any는 NaN값이 하나라도 존재하면 삭제하고 how=all 은 모든 데이터가 NaN이 경우에만 삭제가 됩니다. 이제 코드를 진행시키고 age 컬럼에 있는 177개의 결측치가 잘 제거됐는지 확인해보겠습니다.

 

import seaborn as sns

df= sns.load_dataset('titanic')

#누락 데이터 확인
print(df.isnull())

print('\n')

#누락 데이터 개수 확인
print(df.isnull().sum(axis=0))

#deck 컬럼 제거하기

df_thresh = df.dropna(axis = 1, thresh = 500)
print('\n')
print(df_thresh.columns)

#age 컬럼 데이터가 nan인 행 모두 제거
df_age = df_thresh.dropna(subset = ['age'], how = 'any', axis = 0)
print('\n')
print(len(df_age))
print('\n')

네 이렇게 891개의 행중 177개가 삭제된 714개의 행이 출력됐습니다. 다음 시간에는 이렇게 결측치가 삭제된 데이터를 가지고 그래프를 그려보도록 하겠습니다. 

반응형