이상치
- 중심 경향성에서 멀리 떨어진 값
- 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)