Data_Analysis_Track_33/Python
Python_Pandas_01-3(결측치)
lsc99
2023. 9. 12. 21:30
결측치 (Missing Value, Not Available)
결측치 : 모르는 값, 수집이 안된값, 현재 가지고 있지 않은 값.
- 판다스에서 결측치
None, numpy.nan, numpy.NAN
결측치는 float 타입으로 처리된다.
결측치 확인 : 각 함수/메소드는 각 원소별로 결측치인지 확인해서 결과를 반환한다.
- Numpy
np.isnan(배열)
import numpy as np
a = np.array([1,np.nan])
np.isnan(a)
- Series/DataFrame
Series/DataFrame객체.isnull() 또는 isna()
Series/DataFrame객체.notnull() 또는 notna()
import pandas as pd
import numpy as np
s = pd.Series([10, 20, 30, np.nan, 50, np.nan, 60])
print("원소개수:", s.size)
print("결측치를 뺀 원소개수:", s.count())
isnull()로 True가 나오는 값들은 결측치가 된다.
s.isnull() # 원소별로 결측치인지 체크(결측치: True)
# s.isna()
notnull()로 False가 나오는 값들은 결측치가 된다.
s.notnull() # 결측치 : False, 유효값: True
# s.notna()
결측치 개수 구하기
# 결측치의 개수
s.isnull().sum() # bool값들을 더할 경우 : True - 1, False - 0 으로 변환후 계산 -> True가 몇개인지 출력한다.
결측치 비율 구하기
# 결측치의 비울
s.isnull().mean()
결측치 처리
- 제거
dropna()
- 다른값으로 대체
fillna()
평균, 중앙값, 최빈값을 주로 사용
s2 = s.copy()
s2 # 결측치는 float 타입이기 때문에 정수와 함께 float 타입으로 생성된다.
dropna() -> 결측치 제거
s2.dropna() # s2에서 결측치를 제거한 결과를 새로운 series에 담아서 반환. -> 원본이 바뀌지 않는다.
dropna(inplace=True) -> 결측치 제거, 원본 변경
s2.dropna(inplace=True) # 원본 변경
fillna() -> 결측치 값 대체
s.fillna(10000) # 결측치 값들을 새로운 값으로 채운다.
# 결측치를 대체 : 가장 가능성이 높은 값으로 채움 -> 수치 : 평균, 중앙값, 범주 : 최빈값
결측치 제거하고 평균
m = s.mean() # 결측치를 제거하고 계산.
m
평균으로 결측치 채우기
s.fillna(m)