numpy - 조건처리, 결측값 처리, any( ), all( )

KDG·2021년 2월 10일
0

1. 조건처리

np.where( 조건, 조건이 True면 나올 값, else처럼 나머지 값)

ar = np.arange(9).reshape(3,3)
  -> [[0, 1, 2],
      [3, 4, 5],
      [6, 7, 8]]
      
* np.where(ar<4, -1, 999)  
# ar의 값이 4보다 작으면 -1, 나머지는 999로
  -> [[ -1,  -1,  -1],
      [ -1, 999, 999],
      [999, 999, 999]]

* np.where(ar<4, ar*10, ar-10)   # 연산도 가능
  -> [[ 0, 10, 20],
      [30, -6, -5],
      [-4, -3, -2]]

2. 결측값 처리

결측값(NaN)을 처리하는 방법

a = [[ 11.  12. 100.  nan]
     [ 21.  22.  23.  24.]
     [ 31.  82.  nan  34.]
     [ nan  42.  43.  44.]]
     
 * np.isnan(a) : 결손값을 True, False로 리턴
   -> [[False False False  True]
       [False False False False]
       [False False  True False]
       [ True False False False]]
 
 * np.nan_to_num(a) : 결손값 전부 0으로 처리
   -> [[ 11.  12. 100.   0.]
       [ 21.  22.  23.  24.]
       [ 31.  82.   0.  34.]
       [  0.  42.  43.  44.]]
       
  * np.nan_to_num(a, nan = -1) : 결손값 전부 -1으로 처리
   -> [[ 11.  12. 100.   -1.]
       [ 21.  22.  23.  24.]
       [ 31.  82.   -1.  34.]
       [  -1.  42.  43.  44.]]
       
* np.nan_to_num(a, nan = np.nanmean(a))
# np.nanmean(a)는 결손값을 무시하고 평균을 구하는 함수
  -> [[ 11.          12.         100.          37.61538462]
      [ 21.          22.          23.          24.        ]
      [ 31.          82.          37.61538462  34.        ]
      [ 37.61538462  42.          43.          44.        ]] 

3. any( ), all( )

  • np.any( ) : 배열의 데이터 중 조건과 맞는 데이터가 있으면 True, 전혀 없으면 False
a = [[ 11.  12. 100.  nan]
     [ 21.  22.  23.  24.]
     [ 31.  82.  nan  34.]
     [ nan  42.  43.  44.]]
     
* np.isnan(a).any(axis=1)
# axis=1 행을 축으로 isnan 결측값이 하나라도 있으면 True, 없으면 False
  -> [ True False  True  True]
  
* np.isnan(a).any(axis=0)
# axis=0 열을 축으로 isnan 결측값이 하나라도 있으면 True, 없으면 False
  -> [ True False  True  True]
  • np.all( ) : 배열의 모든 데이터가 조건과 맞으면 True, 하나라도 다르면 False
* np.isnan(a).all(axis=1)
# axis=1 행을 축으로 isnan 모든 요소값이 결측값이면 True, 아니면 False
  -> [False False False False]
  
* np.isnan(a).all(axis=0)
# axis=0 열을 축으로 isnan 모든 요소값이 결측값이면 True, 아니면 False
  -> [False False False False]

0개의 댓글