본문 바로가기
Learn Coding/python

isnan vs isna vs isnull 차이점(스마트인재개발원)

by 북극성매니아 2021. 11. 24.
반응형

파이썬 결측값 메서드

요즘 파이썬으로 머신러닝 수업을 받는데 데이터 전처리를 하면서 결측치를 처리하기 위해서 메서드(함수)를 사용하여 결측값을 찾는데 비슷한 메서드가 자주 등장하여 햇갈리는 부분이 있어서 개념정리도 할겸해서 포스팅을 해보니다.

 

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 

 

numpy.isnan — NumPy v1.21 Manual

This condition is broadcast over the input. At locations where the condition is True, the out array will be set to the ufunc result. Elsewhere, the out array will retain its original value. Note that if an uninitialized out array is created via the default

numpy.org

 

np.isnan은 NaN에 대해 요소별로 테스트하고 결과를 부울 배열로 반환합니다.

 

결과가 저장되는 위치입니다. 제공된 경우 입력이 브로드캐스트하는 모양이 있어야 합니다. 제공되지 않거나 None이면 새로 할당된 배열이 반환됩니다. 튜플(키워드 인수로만 가능)의 길이는 출력 수와 동일해야 합니다.

 

이 조건은 입력을 통해 브로드캐스트됩니다. 조건이 True인 위치에서 out 배열은 ufunc 결과로 설정됩니다. 다른 곳에서는 out 배열이 원래 값을 유지합니다. 초기화되지 않은 출력 배열이 default 를 통해 생성 out=None되는 경우 조건이 False인 위치는 초기화되지 않은 상태로 유지됩니다.

출처:Numpy.org

isnan 사용예제

isnan 예제


2. isna

isna는 pandas의 결측치를 찾아주는 메서드입니다.

Pandas의 공식사이트의 API reference를 참고하시기 바랍니다.

https://pandas.pydata.org/docs/reference/api/pandas.isna.html#pandas.isna

 

pandas.isna — pandas 1.3.4 documentation

For scalar input, returns a scalar boolean. For array input, returns an array of boolean indicating whether each corresponding element is missing.

pandas.pydata.org

 

pd.isna()는배열과 유사한 객체에 대한 누락된 값을 감지합니다.

이 함수는 스칼라 또는 배열과 유사한 객체를 취하여 값이 누락되었는지 여부를 나타냅니다.(숫자 배열의 경우 NaN, 객체 배열의 경우 None 또는 NaN, datetimelike의 경우 NaT).

 

스칼라 입력의 경우 스칼라 부울을 반환합니다. 배열 입력의 경우 해당하는 각 요소가 누락되었는지 여부를 나타내는 부울 배열을 반환합니다.

출처: pandas.org

isna 사용예제

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.

isnull

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/)

 

스마트인재개발원

4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관

www.smhrd.or.kr

반응형

댓글