데이터 분석을 할 때, 데이터를 다루기 쉽도록 범주형 데이터를
수치형 데이터로 변환해야 할 경우가 많습니다.
이러한 작업을 범주값 매핑(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 함수를 이용하여 쉽게 구현할 수 있습니다.
이를 통해 범주값을 수치화하고, 이를 이용하여 데이터를 가공하는 등의 작업을 수행할 수 있습니다.
데이터 분석에서는 데이터의 정확성과 효율성이 매우 중요합니다
따라서 데이터를 다룰 때에는 범주값 매핑과 같은 기술을 적극적으로 활용하여
정확하고 빠르게 분석할 수 있도록 노력해봅시다. ^^
'다양한 실전소스코드 > PYTHON데이터과학' 카테고리의 다른 글
파이썬으로 배우는 재귀함수, 상세 설명 (0) | 2023.03.19 |
---|---|
[중요]Pandas에서 Column 필터링 하는 3가지 방법 (0) | 2023.03.17 |
MinMaxScaler (Sklearn) 다양한 사용예 (0) | 2023.03.17 |
Pandas 날짜 컬럼의 시간값으로 오전 오후 분리하기 (0) | 2023.03.17 |
Pandas 함수 인자로 2개 컬럼 -> 새 컬럼 대입 (0) | 2023.03.16 |
댓글