Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Oracel
- python3
- level 2
- Kaggle
- 오라클
- sklearn
- matplotlib
- SQL
- 머신러닝
- 실기
- 실습
- 알고리즘
- pandas
- 튜닝
- level 1
- Python
- 프로그래머스
- seaborn
- 빅분기
- Numpy
- 빅데이터 분석 기사
- 카카오
- 코딩테스트
- oracle
- 파이썬
- 데이터 분석
- R
Archives
- Today
- Total
라일락 꽃이 피는 날
[빅분기 실기] 데이터 정제 - 이상치, 결측치 처리 본문
728x90
이상치 확인
# 상자수염도표 그리기
df.boxplot(column='컬럼명')
이상치 처리
1. 이상치 기준을 IQR로 하여 제거
IQR = Q3 (3사분위수) - Q1 (1사분위수)
IQR = df['컬럼명'].quantile(0.75) - df['컬럼명'].quantile(0.25)
IQR × 1.5 보다 크거나 작은 값을 제거하여 새로운 데이터셋에 할당
df_new = df[(df['컬럼명'] < Q3 + IQR * 1.5 ) & (df['컬럼명'] > Q1 - IQR * 1.5 )]
2. 로그(log) 변환
변수를 log 변환하여 새로운 변수로 생성
df['log_컬럼명'] = np.log(df['컬럼명'])
3. 제곱근(sqrt) 변환
변수를 sqrt 변환하여 새로운 변수로 생성
df['sqrt_컬럼명'] = np.sqrt(df['컬럼명'])
⇒ 이상치 처리 후, histogram과 corr()로 확인
결측치 확인
isnull() # 결측이면 True 반환
notnull() # 결측이면 False 반환
# 변수별 결측값 개수 확인
isnull().sum()
# 변수별 결측 아닌 값 개수 확인
notnull().sum()
# 행 단위로 결측값 개수 확인
isnull().sum(1)
# 행 단위로 실측값 개수 확인
notnull().sum(1)
결측치 제거
# 결측값 있는 행 제거
df.dropna(axis=0)
# 결측값 있는 열 제거
df.dropna(axis=1)
# 결측값 있는 특정 행/열 제거
df[['컬럼명']].dropna()
결측치 대체
# 특정 값으로 대체
df.fillna(값)
# 앞의 값으로 대체
df.fillna(method='ffill')
df.fillna(method='pad')
# 다음 값으로 대체
df.fillna(method='bfill')
df.fillna(method='backfill')
# 평균 대체
df.fillna(df.mean())
# 다른 변수 값으로 대체
np.where(pd.notnull(df['컬럼명1'])==True, df['컬럼명1'], df['컬럼명2'])
# 집단 평균 값으로 대체
# 평균 대체 함수 생성
fill_mean_func = lambda g: g.fillna(g.mean())
# 집단별 평균 적용
df.groupby('컬럼명').apply(fill_mean_func)
# 집단별 특정 값으로 대체
# 특정값 기준 저장
fill_values = {1:1000, 2:2000}
# 설정 기준 함수 생성
fill_func = lambda d: d.fillna(fill_values[d.name])
# 집단별 설정 함수 적용
df.groupby('컬럼명').apply(fill_func)
# 변수별 다른 대체 방법
# 기준 함수 생성
fill_val = {'a':data.a.mean(), 'b':0}
# 함수 적용
df.fillna(fill_val)
728x90
'데이터 분석 > 빅데이터 분석 기사' 카테고리의 다른 글
[빅분기 실기] 로지스틱 회귀 모델 (0) | 2022.06.16 |
---|---|
[빅분기 실기] 머신러닝 - 회귀문제 (0) | 2022.05.24 |
[빅분기 실기] 머신러닝 - 분류문제 (0) | 2022.05.22 |
[빅분기 실기] 머신러닝 프로세스 (0) | 2022.05.22 |
[빅분기 실기] 데이터 탐색 (0) | 2022.05.22 |