이상치
중심 경향성에서 멀리 떨어진 값
처리 방법
- 이상치 처리에 절대적인 기준 x
- Carling, Tukey 방법 등
- 분포 기반으로 처리도 가능
결측치
값이 기록되지 않고 비어 있음
처리 방법
- 결측치 처리에 절대적인 기준 x
- 단순 제거, 특정 값으로 대체하는 방식 등
- 분석 데이터에서 결측치가 차지하는 비중이 낮은 경우 보통 단순 제거함
붓꽃 결측 데이터 - iris_missing.csv
주요 함수 및 메서드
pandas - isna(), isnull()
- 결측치 원소를 True, 관측치를 False로 반환
- 반대 기능 메서드 notna(), notnull()
pandas - fillna()
- 결측치 채우기 위한 메서드
- value 인자에 결측치를 채워 넣을 값을 입력하며 딕셔너리 사용 가능
- 'bfill'은 뒤의 값, 'ffill'은 앞의 값을 참고해 결측 처리
pandas - dropna()
- 결측치가 있는 row/column 제거
- how인자에 any / all 사용해 결측치가 있는 row / column 처리
Q3. 평균을 기준으로 1.5 표준편차를 넘어서는 값을 이상치라고 간주할 때 Sepal.Length 변수를 기준으로 이상치인 row 개수는 몇 개인가?
내 코드
df=pd.read_csv("iris.csv")
df.head(7)
sl_mean=df["Sepal.Length"].mean()
sl_std=df["Sepal.Length"].std()
print(sl_mean)
print(sl_std)
outarr = [num for num in df["Sepal.Length"] if num < (sl_mean - (1.5 * sl_std)) or num > (sl_mean + (1.5 * sl_std))]
len(outarr) # 21
강의 코드
sl_mean=df["Sepal.Length"].mean()
sl_std=df["Sepal.Length"].std()
print(sl_mean)
print(sl_std)
cond_1=df["Sepal.Length"]<(sl_mean-1.5*sl_std)
cond_2=df["Sepal.Length"]>(sl_mean+1.5*sl_std)
df_out=df.loc[(cond_1)|(cond_2)] # (cond_1)|(cond_2)은 행의 조건을 의미. True인 행만 선택해 새로운 DataFrame 생성. 선택된 행의 인덱스를 df_out에 저장
len(df_out)
'Data > Python' 카테고리의 다른 글
[Data/Python] 상관분석 (0) | 2024.01.24 |
---|---|
[Data/Python] 이론 정리 (1) | 2024.01.24 |
[Data/Python]실습_표본 추출 (0) | 2024.01.17 |
[Data/Python]실습_EDA: 수치형, 범주형 기술통계 (0) | 2024.01.17 |
[Data/Python]실습_기본문법 (0) | 2024.01.17 |