본문 바로가기

Aiffel_learning/Data_analysis

2-6. pandas : 결측치

결측치(NULL, NaN, NA; 비어있는값) (isna, dropna, fillna)

count()             #결측치 제외한 수를 반환

# isna = isnull : 결측치 여부 확인
data.isna()         # 결측치=True(1) 출력됨
data.isna().sum()   # 칼럼별로 결측치 갯수 측정
data.isna().mean()  # 칼럼별로 결측치 비율 측정(얘를 좀 더 많이 씀)

data[data['칼럼'].isna()]       # 해당 칼럼에서 결측치 있는 항목(정보전체) 출력됨
data[data['칼럼'].isna()].index # 해당 칼럼에서 결측치 있는 항목의 인덱스 출력됨

※ 결측치는 결국 노이즈라 해당 항목은 삭제하고 진행하는게 좋음 

# dropna : 결측치 항목 삭제
data.dropna()  # 결측치가 있는 항목들은 다 삭제하고 출력됨
data.dropna(subset = ['칼럼이름'])  # 특정 칼럼의 결측치 항목 다 삭제

# fillna('값') : 결측치를 해당 값 으로 변경
data.fillna(a)  # 모든 항목에서 NaN -> a로 변경돼있음
data['칼럼이름'].fillna(a)  # 특정 항목값만 변경
data['칼럼이름'] = data['칼럼이름'].fillna(a)  # 이렇게 덮어써줄 수 있음

그럼, 어떤 값으로 바꾸는게 좋은가? 

아무래도 outlier(다른 값들의 분포와 비교했을때 비정상적으로 떨어져있는 관측치) 때문에

mean(평균값) 보다는 median(중앙값)이 더 안전함

data.mean()    # mean 값 계산
data.median()  # median 값 계산