본 게시물은 코드프레소의 code.PRESS-UP 체험단 과정을 담은 게시물입니다.
해당 게시물 수강강좌 :
파이썬으로 배우는 데이터 분석 : Pandas
Pandas 라이브러리로 데이터 분석 시작하기
이번 포스팅은 지난 포스팅에 이어서 결측값을 처리하는 방법에 대해 알아봅시다.
결측치에 대한 내용은 저도 코드프레소 강의를 통해 처음 알게 되었습니다.
dataframe.info()
dataframe.isnull()
dataframe.isnull().sum()
dataframe.info()
📌 각 컬럼 별 non-null 값의 개수를 출력함
📌 전체 행의개수에서 non-null의 개수를 빼면 나머지가 결측치의 개수가 됨
dataframe.isnull()
📌 DataFrame 내 모든 데이터에서 NaN 값을 찾아 True/False로 반환
📌 isna() 메소드와 동일한 기능을 수행
📌 컬럼 별 결측 값의 개수를 확인할 수 있음
📌 isnull()의 결과를 모두 더한 값
📌 sum() 메소드의 인자에 axis = 1을 추가하면 각 행 별 결측값의 개수 확인 가능
# axis = 1을 추가하면 각 행 별 결측값의 개수를 확인 할 수 있음
dataframe.isnull().sum(axis = 1)
dataframe.isnull().sum()
# 비슷한 메소드로 다음이 있다.
isnull().value_counts()
📌 NaN 값이 하나라도 포함된 행 데이터를 조회 및 제거해주는 함수
📌 나머지 데이터를 DataFrame으로 반환
#Parameters
how = 'all' : 모든 행 데이터의 값이 NaN인 경우만 찾아서 제거
inplace = True : 원본 데이터에 적용
axis = 'columns' : dropna() 메소드가 열을 기준으로 동작
# 행의 결측치가 2개 초과인 행만 삭제
dataframe = dataframe.dropna(thresh = 2)
# 특정열 모두가 결측치일 경우 해당 행 삭제
datafraem = dataframe.dropna(subset = ['col1', 'col2', 'col3'], how = 'all')
# 특정열에 1개 초과의 결측치가 있을 경우 해당 행 삭제
dataframe = dataframe.dropna(subset =['col1', 'col2', 'col3], thresh = 1)
📌 결측치를 다른 값으로 대체
📌 value에 대체할 값을 입력
📌 value 값의 형식은 단일값, 딕셔너리, Series, 또는 DataFrame 등등
📌 value에 딕셔너리 객체 전달시 컬럼별 대체할 값을 다르게 설정 가능
📌 mean(), median(),mode() 등의 집계함수를 이용한 대표 값으로 결측값 대체 가능
📌 원본을 변경하기 위해서는 inplace = True 지정 필요
📌 replace(), interpolate()라는 비슷한 메소드가 존재한다.
replace_set = {'col2' : 0, 'col4' : '100'}
dataframe.fillna(replace_set)
dataframe.fillna(0)
# 특정열에 결측치가 있을 경우 다른 값으로 대체하기
dataframe['col'].fillna(0)
# 컬럼의 평군으로 대체 하기
dataframe['col'] = dataframe['col'].fillna(df['col'].mean())
# 결측치 바로 이전 값으로 채우기
dataframe.fillna(method = 'pad')
# 결측치 바로 이후 값으로 채우기
dataframe.fillna(method = 'bfill')
# 결측치 값을 -50으로 채운다
dataframe.replace(to_replace = np.nan, value = -50)
# 인덱스를 무시하고 값들을 선형적으로 같은 간격으로 처리한다
dataframe.interpolate(method = 'linear', limit_direction = 'forward')
📌 예측 기법을 사용한 결측치 추정은 결측치들의 특성이 패턴을 가진다고 가정후 진행
📌 결측값이 없는 컬럼들로 구성된 dataset으로 결측값이 있는 컬럼을 예측한다.
📌 회귀 분석 기술을 활용하거나 SVM과 같은 기계 학습 방법 또는 이러한 결측치를 채우는 데이터 마이닝 방법과같은 다양한 통계 방법이 있다.
📌 10% 미만 : 삭제 또는 대치
📌 10% ~ 50% : regression or model based imputation
📌 50% 이상 : 해당 컬럼(변수) 자체 제거
결측치라는 개념을 코드프레소 강의를 통해 처음 알게 되었고
기초적인 처리방법에 대해서도 코드프레소 강의에서 처음 알게 되었습니다.
다음 강의에서는 인덱싱을 활용하여 데이터를 조회하는 방법에 대해 알아보겠습니다.
코드프레소 강의 덕분에 잘 몰랐던 개념도 알아가고, 다른 개념도 정확하게 파악하고 가네요