데이터분석

data handling, map, np.where

still..epochs 2023. 8. 18. 14:27

데이터를 다루다보면, 해당 컬럼을 변경하거나 변형해야할 때가 있다.

이때 유용한 map 과 np.where 을 소개하고자 한다.

 

1) map

map 은 Series 형태인 데이터에 적용가능한 메서드이다. dataframe은 시리즈가 여러개 합쳐진 자료형이라고 생각하면 되는데, 그렇다면 dataframe에 map 메서드를 적용할 수 있다는 뜻이다.

예를들어 위와 같은 데이터가 df 라는 변수에 저장되어 있다고 생각해보자. diagnosis 는 M, B 두 가지 문자가 존재한다.

나는 M은 malignant, B는 benign 로 변경하고 싶다.

그렇다면 다음과 같은 코드를 실행하면 된다.

class_mapping = {'M' : 'malignant', 'B' : 'benign'}
df['diagnosis'] = df['diagnosis'].map(class_mapping)
df.head()

실행 결과

 

2) np.where

numpy.where() 함수는 조건에 맞는 원소를 반환하는 함수이다.

가장 간단한 예제로는 다음과 같다.

a = np.arange(10)
a
>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# np.where(condition, True, False)
np.where(a < 5, a, 10*a)
array([ 0,  1,  2,  3,  4, 50, 60, 70, 80, 90])

위의 예제에서 a<5 는 condition을 의미하고 해당 조건이 참 일 경우에는 a를 반환하고, 거짓 일 경우에는

10*a인 값을 반환한다.

 

예제를 살펴보았으니 dataframe을 통한 다른 예제를 살펴보자.

map 에서 살펴보았던 예제에서 'diagnosis' 컬럼의 유니크한 값은 'malignant', 'benign' 이 존재하였다.

np.where을 사용하여 해당 값을 각각 1과 0 으로 변경해보자.

 

df['diagnosis'] = np.where(df['diagnosis'] == 'malignant', 1, 0)
df.head()

 

실행 결과