Python Library - Pandas(5)
본 게시물은 코드프레소의 code.PRESS-UP 체험단 과정을 담은 게시물입니다.
해당 게시물 수강강좌 :
파이썬으로 배우는 데이터 분석 : Pandas
Pandas 라이브러리로 데이터 분석 시작하기
이번 포스팅은 지난 포스팅에 이어서 결측값을 처리하는 방법에 대해 알아봅시다.
결측치에 대한 내용은 저도 코드프레소 강의를 통해 처음 알게 되었습니다.
1. 결측치 유무 확인
dataframe.info()
dataframe.isnull()
dataframe.isnull().sum()
1-1. info()
dataframe.info()
dataframe.info()
dataframe.isnull()
dataframe.isnull().sum()
dataframe.info()
📌 각 컬럼 별 non-null 값의 개수를 출력함
📌 전체 행의개수에서 non-null의 개수를 빼면 나머지가 결측치의 개수가 됨
1-2. isnull()
dataframe.isnull()
📌 DataFrame 내 모든 데이터에서 NaN 값을 찾아 True/False로 반환
📌 isna() 메소드와 동일한 기능을 수행
1-3. isnull().sum()
📌 컬럼 별 결측 값의 개수를 확인할 수 있음
📌 isnull()의 결과를 모두 더한 값
📌 sum() 메소드의 인자에 axis = 1을 추가하면 각 행 별 결측값의 개수 확인 가능
# axis = 1을 추가하면 각 행 별 결측값의 개수를 확인 할 수 있음
dataframe.isnull().sum(axis = 1)
dataframe.isnull().sum()
# 비슷한 메소드로 다음이 있다.
isnull().value_counts()
2. 결측치를 찾아 처리
2-1. dropna()
📌 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)
2-2. fillna(value)
📌 결측치를 다른 값으로 대체
📌 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')
2-3. 예측모델(Prediction model)
📌 예측 기법을 사용한 결측치 추정은 결측치들의 특성이 패턴을 가진다고 가정후 진행
📌 결측값이 없는 컬럼들로 구성된 dataset으로 결측값이 있는 컬럼을 예측한다.
📌 회귀 분석 기술을 활용하거나 SVM과 같은 기계 학습 방법 또는 이러한 결측치를 채우는 데이터 마이닝 방법과같은 다양한 통계 방법이 있다.
3. 결측치 처리 가이드라인
📌 10% 미만 : 삭제 또는 대치
📌 10% ~ 50% : regression or model based imputation
📌 50% 이상 : 해당 컬럼(변수) 자체 제거
결측치라는 개념을 코드프레소 강의를 통해 처음 알게 되었고
기초적인 처리방법에 대해서도 코드프레소 강의에서 처음 알게 되었습니다.
다음 강의에서는 인덱싱을 활용하여 데이터를 조회하는 방법에 대해 알아보겠습니다.
코드프레소 강의 덕분에 잘 몰랐던 개념도 알아가고, 다른 개념도 정확하게 파악하고 가네요
Author And Source
이 문제에 관하여(Python Library - Pandas(5)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@vrooming13/Python-Library-Pandas5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)