
평균 중간값 등의 통계량을 낼 수 있다.
결측치를 통계량으로 채워줄 수 있다.
명목데이터 (nominal data), 순서데이터 (ordinal data)
순서가 없다.

이상치를 찾아서 해당 index를 알아내고 drop을 행을 이용해 제거한다.
데이터프레임객체.drop(이상치를가진행인덱스, inplace=True)
matplotlib 의 일부


np.quantile() 함수를 이용한다.
q_1 = np.quantile(df["num_companies_worked"], 0.25)
numerical
categorical ordinal -> values / 순서형 범위 데이터는 값으로 변경!
categorical nominal -> one-hot encoding / 명목형 데이터는 원핫인코딩!
msno.matrix(df);

-> 센서와 연결하면 바로바로 동작을 시각적으로 알 수 있다.
DF객체.isnull().sum()
DF의 결측치의 목록과 개수를 바로 알 수 있다.
a.union(b)
a와 b를 중복없이 하나로 합친다.
두개의 컬럼을 가져와서 |로 합치려고하니, 앞으로 | 사라진다고 경고가 뜬다. union을 왠만하면 쓰자!
평균값과 중앙 값이 크게 다르지 않다면 분포가 비슷한 것이고 NaN값을 중앙 값으로 채울 수 있다.
np로 평균값을 구하는 것은 NaN값을 제외하고, 중앙값은 NaN이 나온다. 모듈에 포함된 mean()과 median()은 NaN을 제외하고 한다

결측치와 이상치를 해결하는 정확한 방법은 없다. 다만 도메인의 지식을 가지고, 결측치를 어떻게 채우는 것이 맞을지, 정말 이 값이 이상치인지에 대해 판단하는 것이 데이터 분석의 실력이다.
데이터를 수치로 바꾸는 아이디어가 매우 중요하다.
날짜 관련된 값은 pd.to_datetime(, format="%Y-%m-%d") 로 데이터타입을 datetime으로 변경 후에 년DF객체.dt.year / 월DF객체.dt.month / 일DF객체.dt.day / 요일DF객체.dt.day_name
범주형 데이터에서 순서형 데이터는 점수와 같이 값으로 변환시킨다. 피처.value_counts()를 이용하여 종류를 확인하고 종류에 맞게 숫자를 딕셔너리형식으로 지정해준다. level= {'종류1' : 점수1, '종류2' : 점수2....} 이후 피처.replace(level) 로 바꿔준다.
one-hot encoding에서 pd.get_dummies()을 사용한다.
피처의 값에 따라서 하나의 새로운 피처를 만들어준다.
pd.get_dummies(df[["department", "marital_status"]],
prefix=["dep", "ms"],
prefix_sep="+",
)
df["attrition"] = pd.get_dummies(df["attrition"], drop_first=True)