📌결측치 처리 정제하기
📍빠진 데이터 ( 결측치 ) 찾기
결측치 : 누락된 값, 비어있는 값, 데이터 수집 과정에서 발생한 오류로 포함될 가능성
함수가 적용되지 않거나 분석 결과가 왜곡되는 문제 발생함 , 실제 데이터 분석시 결측치 확인, 제거 후 분석해야 한다.
📍결측치 만들기
- numpy 의 np.nan 입력
# 결측치 만들기
df= pd.DataFrame({'sex':['M','F',np.nan,'M','F'],
'score':[5,4,3,4,np.nan]})
df
# 결축치 확인하기
pd.isna(df)
# 결측치 빈도 확인하기
pd.isna(df).sum()
📍결측치 제거하기
- dropna(subset=('')
# 결측치 있는 행 제거하기
df.dropna(subset=['score'])
#여러 변수에 결측치 없는 데이터 추출하기
df_nomiss=df.dropna(subset=['score','sex'])
df_nomiss
# 결측치가 하나라도 있으면 제거하기
df.dropna()
* df.dropna() 는 모두 변수에 결측치가 없는 행만 남긴다.
간편하지만 분석에 사용 될 수 있는 데이터까지 제거할 수 있음.!
분석에 사용할 변수 직접 지정하여 결측치 제거하는 방법 권장함
# 결측치 제거하지 않고 분석하기
df['score'].mean()
df['score'].sum()
df.groupby('sex').agg(mean_score=('score','mean'),
(sum_score = ('score','sum')
📍결측치 대체하기
결측치 대체법 (imputation): 결측치를 제거하는 대신 다른 값을 채워 넣는 방법으로
- 대표값(평균값,최빈값)등 구해 일괄 대체
- 통계 분석 기법으로 결측치의 예측값 추정 후 대체
- df.fillna()
()에 넣은 값으로 결측치 채우기
# 평균값으로 결측치 대체하기
exam['math'].mean() #평균값 먼저 구하기
exam['math'] = exam['math'].fillna(55) #fillna 함수를 사용해서 평균값 대체!
📍이상치 정제하기
이상치 : 실제 데이터에 대부분 이상치 들어있음 , 제거하지 않으면 분석 결과 왜곡되므로 분석 전에 제거 작업 필요
- 존재할 수 없는값 : 성별 변수에 남자,여자 말고 있는 값 NaN 으로 변환
* np.where() 은 문자와 함께 NaN을 반환할 수 없음
📍이상치 제거하기 - 극단적인값
극단치(Outlier) : 논리적으로 존재할 수 있지만 극단적으로 크거나 작은 값 -> 극단치가 있으면 분석 결과가 왜곡 될 수 있어 제거 후 분석
<기준>
- 논리적 판단 (ex: 성인 몸무게 40~ 150kg 벗어나면 매우 드물므로 극단치로 간주)
- 통계적 기준(ex: 상하위 0.3% 또는 표준편차 ± 3 벗어나면 극단치로 간주)
- box plot을 이용해 중심에서 크게 벗어난 값을 극단치로 간주
📍극단치 기준값 정하기
극단치 기준은 1사분위수와 3사분위수를 구한값에서 계산을 해야하는데
IQR = 3사분위 - 1사분위 이다.
- quenatile(.25) | - quenatile(.75) | - 하한값 구하기 | - 상한값구하기 |
1사분위수 값 | 3사분위 값 | 1사분위값 - 1.5 * IQR | 3사분위값 + 1.5 * IQR |
📍결측치 제거하고 분석하기
상한가 하한가를 구하고 기준값을 벗어나는 값들은 다 NaN 처리를 해준다.
'성동 1기_ 모빌리티 전Z전능 DA' 카테고리의 다른 글
태블로 강의 - 데이터 시각화와 시각적 분석 방법 (1) | 2023.12.11 |
---|---|
Python 그래프 만들기 - Matplotlib, seaborn (0) | 2023.12.01 |
Python 기초 (3) - 함수, 데이터프레임,어트리뷰트, 매서드, 데이터 분석 기초 (0) | 2023.11.29 |
SQL 팀 프로젝트(3) - EDA 분석, 가설 세우기, 가설 검증 (2) | 2023.11.28 |
Python 기초(1) - 아나콘다 설치, 주피터 노트북 설치, 파이썬 기초, 내장함수 (0) | 2023.11.24 |