Python Data/Python 실행

Pandas: 넘파이(Numpy) where() 함수 Pandas에서 사용하기

palefaceman 2022. 9. 19. 13:49

넘파이(Numpy)에서 if-else 로직을 이용하여 배열(array)에 빠르게 값을 업데이트할 수 있었다. 

 

예를 들어, 아래코드와 같이 넘파이(Numpy) where() 함수를 사용하여 배열(array)을 업데이트한다.

import numpy as np

#Numpy 배열 값
x = np.arraY([1,3,3,6,7,9])

#새로운 값 배열에 넣기
x = np.where((x < 5) | (x > 8), x/2, x)

#새로운 배열 값 보기

array([0.5, 1.5, 1.5, 6. , 7. , 4.5])

If, 기존 배열에 값이 5보다 작거나 8보다 크면, 그 값을 2로 나눈 값을 새로 저장한다.

 

Else, 나머지는 그대로 둔다.

 

판다스 데이터 프레임(pandas DataFrame)에서도 판다스(pandas) where() 함수를 사용하여 똑같은 입력을 할 수 있다. 하지만 문법(syntax)은 조금 다르다.

 

우선, 넘파이(Numpy) where() 함수에 문법을 본다.

x = np.where(condition, value_if_ture, value_if_false)

그리고 다음으로, 판다스(pandas) where() 함수다.

df['col'] = (value_if_false).where(condition, value_if_true)

아래 예시를 보며 판다스(pandas) where() 함수를 사용해 본다.

예시 1: 판다스(pandas) where() 함수

아래 판다스 데이터 프레임(pandas DataFrame)이 있다.

 

import pandas as pd

# 데이터프레임 생성
df = pd.DataFrame({	'A':[18,22,19,14,14,11,20,28],
					'B':[5,7,7,9,12,9,9,4]})

#데이터 프레임
print(df)
                 
                 
    A   B
0  18   5
1  22   7
2  19   7
3  14   9
4  14  12
5  11   9
6  20   9
7  28   4

판다스(pandas)에서 where() 함수를 사용해서 A 열 값을 변경한다.

# 데이터 프레임 업데이트하기
df['A'] = (df['A'] /2 ).where(df['A'] < 20, df['A'] *2)

# 업데이트 보기
print(df)

     A   B
0   9.0   5
1  44.0   7
2   9.5   7
3   7.0   9
4   7.0  12
5   5.5   9
6  40.0   9
7  56.0   4

If, 열 A에 값이 20보다 작다면 기존에 값에 x2를 하고 업데이트한다.

 

Else, 나머지는 /2로 나눈다. 

 

관련 포스팅