본문 바로가기
다양한 실전소스코드/PYTHON데이터과학

Pandas 컬럼을 딕셔너리로 매핑해서 새 컬럼에 추가하기

by aibattle 2023. 3. 17.
728x90
반응형

데이터 분석을 할 때, 데이터를 다루기 쉽도록 범주형 데이터를

수치형 데이터로 변환해야 할 경우가 많습니다.

 

이러한 작업을 범주값 매핑(mapping)이라고 합니다.

범주값 매핑을 수행하는 가장 기본적인 방법은 사전(dictionary)을 이용하는 것입니다. 

예를 들어, 다음과 같은 데이터프레임이 있다고 가정해보겠습니다.

import pandas as pd

df = pd.DataFrame({'fruits': ['apple', 'banana', 'orange', 'kiwi']})


이제 이 데이터프레임에서 fruits 열의 값을 수치화하고 싶다고 가정해봅시다.

 이를 위해서는 fruits 열의 고유값(unique values)을 확인하고, 

이를 사전으로 매핑해주어야 합니다.

 


fruits_dict = {'apple': 0, 'banana': 1, 'orange': 2, 'kiwi': 3}
df['fruits_mapped'] = df['fruits'].map(fruits_dict)


위 코드에서 fruits_dict는 fruits 열의 고유값과 그에 해당하는 수치를 사전으로 저장한 것입니다.

 map 함수를 사용하여 fruits 열의 각 값을 fruits_dict에 매핑하여 fruits_mapped 열에 저장합니다.

이제 df 데이터프레임은 다음과 같이 변환되었습니다.

   fruits  fruits_mapped
0   apple              0
1  banana              1
2  orange              2
3    kiwi              3

 


이번에는 더 복잡한 데이터프레임을 다루어보겠습니다. 


df = pd.DataFrame({
    'fruits': ['apple', 'banana', 'orange', 'kiwi', 'apple'],
    'price': [1000, 2000, 1500, 3000, 900]
})
이 데이터프레임에서는 fruits와 price 두 개의 열이 있습니다. 

fruits 열은 범주형 데이터이고, price 열은 수치형 데이터입니다. 

이번에는 fruits 열의 값을 매핑하여 fruits_mapped 열을 새롭게 만들고, 

이를 이용하여 price 열의 값을 가공해보겠습니다.


fruits_dict = {'apple': 0, 'banana': 1, 'orange': 2, 'kiwi': 3}
df['fruits_mapped'] = df['fruits'].map(fruits_dict)
df['price_discounted'] = df['price'] * (df['fruits_mapped'] + 1) / 10


위 코드에서는 먼저 fruits_dict를 이용하여 fruits 열의 값을 수치화한 후,

 fruits_mapped 열에 저장하였습니다. 

그 다음으로는 price_discounted 열을 새롭게 만들었습니다. 

 

이 열은 price 열의 값을 fruits_mapped 값에 따라 가공한 결과입니다.

가공 과정을 자세히 살펴보겠습니다.

fruits_mapped 값이 0인 경우(즉, fruits 값이 'apple'인 경우)에는 price 값을 그대로 사용합니다.

fruits_mapped 값이 1인 경우(즉, fruits 값이 'banana'인 경우)에는 price 값을 20% 할인한 값을 사용합니다.

fruits_mapped 값이 2인 경우(즉, fruits 값이 'orange'인 경우)에는 price 값을 30% 할인한 값을 사용합니다.

fruits_mapped 값이 3인 경우(즉, fruits 값이 'kiwi'인 경우)에는 price 값을 40% 할인한 값을 사용합니다.

이를 코드로 나타내면 다음과 같습니다.

df['price_discounted'] = df['price'] * (df['fruits_mapped'] + 1) / 10
위 코드에서 (df['fruits_mapped'] + 1) / 10 부분은 fruits_mapped 값에 따라 할인율을 계산한 것입니다. 

 

예를 들어, fruits_mapped 값이 1인 경우 20% 할인이므로, (1 + 1) / 10 = 0.2가 됩니다.

이렇게 계산한 할인율을 price 값에 곱하여 최종적으로 할인된 가격을 계산합니다.

따라서 이제 df 데이터프레임은 다음과 같이 변환되었습니다.

   fruits  price  fruits_mapped  price_discounted
0   apple   1000              0            1000.0
1  banana   2000              1            1600.0
2  orange   1500              2            1050.0
3    kiwi   3000              3            1800.0
4   apple    900              0             900.0


범주값 매핑은 데이터 분석에서 매우 유용한 기술 중 하나입니다.

판다스(Pandas)의 map 함수를 이용하여 쉽게 구현할 수 있습니다.

이를 통해 범주값을 수치화하고, 이를 이용하여 데이터를 가공하는 등의 작업을 수행할 수 있습니다.

데이터 분석에서는 데이터의 정확성과 효율성이 매우 중요합니다

따라서 데이터를 다룰 때에는 범주값 매핑과 같은 기술을 적극적으로 활용하여

정확하고 빠르게 분석할 수 있도록 노력해봅시다. ^^

 

 

728x90
반응형

댓글