본문 바로가기
study

Data Science #1: 결측치, 이상치

by 스으니 2024. 8. 12.

이상치 

- 중심 경향성에서 멀리 떨어진 값

- Carling, Tukey, 정규분포기반 등등 여러가지

 

결측치

- 값이 비어 있음

- 단순 제거와 특정 값으로 대체

 

pandas - isna(), isnull()

pandas - filna(), bfill, ffill

 

#1
df_na["변수"].isna()
df_na["변수"].notna()

#2
df_na["변수"].isna().sum()

#3 변수별 결측치 개수
df_na.isna().sum()
df_na.isna().sum(axis=0)

#4 row별 결측치 개수
df_na.isna().sum(axis=1)

#5 
df_na.fillna(value = {"변수":999})
df_na.fillna(value = 999)

#6
av = df_na["변수"].mean()
av #결측치 제외하고 계산
df_na.fillna(value = {"변수": av})

 

pandas - dropna()

               how 인자 any, all

pandas - quantile()

               0~1 확률값

 

#1
df_na2.dropna()
df_na2.dropna(how= "any")
df_na2.dropna(how= "all")
df_na2.iloc[:,:-1].dropna(how="all")

#2
print(df["변수"].max())
print(df["변수"].min())
print(df["변수"].mean())

df["변수"].median()
df["변수"].quantile()
df["변수"].quantile(0.05) #하위5%

df["변수"].quantile(0.25)
df["변수"].quantile(0.75) #0.75-0.25 하면 +- 25%

 

예제

#각 수치형 변수의 결측치 개수 총합 (문자형 빼기!)

df.iloc[:,:-1].isna().sum().sum()

#2
m =df["변수"].mean()
x =df.fillna(value={"변수":m})
x["변수"].var()

#3 평균을 기준으로 1.5 표준편차를 넘어서는 값을 이상치
m = df["변수"].mean()
s = df["변수"].std()
c1 = df["변수"]< (m - 1.5*s)
c2 = df["변수"]>(m + 1.5*s)
df_out = df.loc[c1|c2,:]
len(df_out)

'study' 카테고리의 다른 글

JTAG  (0) 2024.05.19