요즘 파이썬으로 머신러닝 수업을 받는데 데이터 전처리를 하면서 결측치를 처리하기 위해서 메서드(함수)를 사용하여 결측값을 찾는데 비슷한 메서드가 자주 등장하여 햇갈리는 부분이 있어서 개념정리도 할겸해서 포스팅을 해보니다.
isnan vs isna vs isnull 차이점
우선 nan은 Not a Number의 뜻으로 결측치, 없는값이라는 의미로 isnan(값)은 값이 결측치이면 boolean 데이터타입인True, 아니면 False를 return하는 메서드 입니다.
isnan과 isna 그리고 isnull은 모두 결측치를 찾아 True, False로 리턴해주는 기능을 하는 메서드입니다.
1. isnan
isnan은 Numpy의 결측치를 찾아주는 메서드입니다.
NumPy의 공식사이트의 API reference를 참고하시기 바랍니다.
https://numpy.org/doc/stable/reference/generated/numpy.isnan.html?highlight=isnan#numpy.isnan
np.isnan은 NaN에 대해 요소별로 테스트하고 결과를 부울 배열로 반환합니다.
결과가 저장되는 위치입니다. 제공된 경우 입력이 브로드캐스트하는 모양이 있어야 합니다. 제공되지 않거나 None이면 새로 할당된 배열이 반환됩니다. 튜플(키워드 인수로만 가능)의 길이는 출력 수와 동일해야 합니다.
이 조건은 입력을 통해 브로드캐스트됩니다. 조건이 True인 위치에서 out 배열은 ufunc 결과로 설정됩니다. 다른 곳에서는 out 배열이 원래 값을 유지합니다. 초기화되지 않은 출력 배열이 default 를 통해 생성 out=None되는 경우 조건이 False인 위치는 초기화되지 않은 상태로 유지됩니다.
isnan 사용예제
2. isna
isna는 pandas의 결측치를 찾아주는 메서드입니다.
Pandas의 공식사이트의 API reference를 참고하시기 바랍니다.
https://pandas.pydata.org/docs/reference/api/pandas.isna.html#pandas.isna
pd.isna()는배열과 유사한 객체에 대한 누락된 값을 감지합니다.
이 함수는 스칼라 또는 배열과 유사한 객체를 취하여 값이 누락되었는지 여부를 나타냅니다.(숫자 배열의 경우 NaN, 객체 배열의 경우 None 또는 NaN, datetimelike의 경우 NaT).
스칼라 입력의 경우 스칼라 부울을 반환합니다. 배열 입력의 경우 해당하는 각 요소가 누락되었는지 여부를 나타내는 부울 배열을 반환합니다.
isna 사용예제
3. isnull
isnull은 pandas의 isna() 메서드의 별칭으로 보통 데이터베이스 등에서 결측치를 null로 표현을 하는데 na보다 null이라는 표현에 익숙한 사람들을 위해 isna를 isnull로 사용할 수 있도록 padas에서 별칭을 만들어 놓은걸로 생각이 됩니다.
아래는 isnull의 설명입니다.
값이 na인지 여부를 나타내는 동일한 크기의 부울(boolean) 객체를 반환합니다. None 또는 np.NaN과 같은 na값은 True로 매핑됩니다.
Signature: train.isnull() -> 'DataFrame'
Docstring:
Detect missing values.
Return a boolean same-sized object indicating if the values are NA.
NA values, such as None or :attr:`numpy.NaN`, gets mapped to True
values.
Everything else gets mapped to False values. Characters such as empty
strings ``''`` or :attr:`numpy.inf` are not considered NA values
(unless you set ``pandas.options.mode.use_inf_as_na = True``).
Returns
-------
DataFrame
Mask of bool values for each element in DataFrame that
indicates whether an element is an NA value.
np.NaN과 df.isna 사용예제
Examples
--------
Show which entries in a DataFrame are NA.
>>> df = pd.DataFrame(dict(age=[5, 6, np.NaN],
... born=[pd.NaT, pd.Timestamp('1939-05-27'),
... pd.Timestamp('1940-04-25')],
... name=['Alfred', 'Batman', ''],
... toy=[None, 'Batmobile', 'Joker']))
>>> df
age born name toy
0 5.0 NaT Alfred None
1 6.0 1939-05-27 Batman Batmobile
2 NaN 1940-04-25 Joker
>>> df.isna()
age born name toy
0 False True False True
1 False False False False
2 True False False False
Show which entries in a Series are NA.
>>> ser = pd.Series([5, 6, np.NaN])
>>> ser
0 5.0
1 6.0
2 NaN
dtype: float64
>>> ser.isna()
0 False
1 False
2 True
dtype: bool
스마트인재개발원(https://www.smhrd.or.kr/)
'Learn Coding > python' 카테고리의 다른 글
파이썬 머신러닝 - Titanic 생존자 예측하기(Kaggle)#1 (0) | 2021.11.25 |
---|---|
머신러닝 파이썬(python) 라이브러리 (0) | 2021.11.22 |
댓글