데이터 분석에서 카테고리 매핑은 데이터를 미리 정해진 범주에 맞게 분류하는 과정입니다. 예를 들어, 음식을 아시안, 패스트푸드, 디저트 같은 유형별로 구분하는 것이 카테고리 매핑의 예시입니다. 이 과정은 데이터를 분석하기 쉽게 만들고, 더 깊은 이해를 가능하게 합니다.
이번 포스트에서는 '음식종류', '주재료', 그리고 '인기도'를 포함하는 데이터 프레임 food_df
를 사용합니다. 이 데이터 프레임은 각각의 음식과 그에 대한 정보를 담고 있습니다. 예를 들어, '김치찌개'는 주재료로 '김치'를 가지며, '인기도'는 '높음'으로 표시됩니다. 이 데이터 세트는 다음과 같이 구성됩니다:
import pandas as pd
# 예시 데이터 수정
data = {
'음식종류': ['한식', '김치찌개', '된장찌개', '불고기', '중식', '짜장면', '탕수육', '일식', '스시', '규동', '양식', '햄버거', '스테이크'],
'주재료': ['-', '김치', '된장', '소고기', '-', '면', '돼지고기', '-', '생선', '소고기', '-', '소고기', '소고기'],
'인기도': ['높음', '높음', '중간', '높음', '높음', '높음', '중간', '높음', '높음', '중간', '높음', '높음', '높음']
}
# 판다스 데이터 프레임 생성
food_df = pd.DataFrame(data)
이 데이터 프레임은 음식 종류에 대한 기본적인 정보와 함께, 각 음식의 인기도를 나타내는 추가적인 정보를 제공합니다.
이 데이터 프레임은 카테고리 매핑을 수행하여 각 음식을 적절한 카테고리로 분류하는 데 사용될 것입니다. 다음 단계에서는 이 데이터를 활용하여 '분류' 컬럼을 만드는 카테고리 매핑 과정을 살펴보겠습니다.
'분류' 컬럼을 생성하기 위해, 사용자 정의 함수 match_category
를 정의하고 이를 데이터 프레임에 적용하겠습니다. 이 함수의 목적은 '음식종류' 컬럼에 있는 각 음식 항목을 적절한 카테고리로 분류하는 것입니다. 예를 들어, '김치찌개', '된장찌개'와 같은 음식은 '한식'으로 분류됩니다.
def match_category(food_item):
if food_item in ['한식', '김치찌개', '된장찌개', '불고기']:
return '한국음식'
elif food_item in ['중식', '짜장면', '탕수육']:
return '중국음식'
elif food_item in ['일식', '스시', '규동']:
return '일본음식'
elif food_item in ['양식', '햄버거', '스테이크']:
return '서양음식'
else:
return '기타'
이 함수는 '음식종류' 컬럼의 각 항목을 입력으로 받아, 해당 음식이 어떤 카테고리에 속하는지를 판단하고 그 결과를 반환합니다.
이제 match_category
함수를 사용하여 '음식종류' 컬럼의 각 값에 대한 매핑을 수행합니다. 이를 통해 생성된 '분류' 컬럼은 각 음식이 속한 카테고리를 나타냅니다.
# '음식종류' 열을 '분류'로 매핑
food_df['분류'] = food_df['음식종류'].apply(match_category)
이 코드는 match_category
함수를 food_df
의 '음식종류' 컬럼에 적용하여, 각 음식을 적절한 카테고리로 분류합니다. 이 과정을 통해, 원래의 데이터에 새로운 차원의 정보를 추가하게 되며, 이 정보는 추후 분석이나 시각화 작업에 중요한 역할을 할 수 있습니다.
이번에는 각 음식을 적절한 카테고리로 분류하기 위해 딕셔너리를 사용하는 방식을 살펴보겠습니다. 이 접근법에서는 '음식종류'를 특정 카테고리에 매핑하는 딕셔너리를 먼저 생성합니다. 이 딕셔너리는 각 음식 종류를 해당하는 카테고리로 매핑하는 역할을 합니다.
def make_dict_to_mapping(food_items, categories):
result_dict = {}
current_category = None
for food in food_items:
if food in categories:
current_category = food
result_dict[food] = current_category
return result_dict
이 함수는 food_items
리스트를 순회하면서 각 항목이 categories
리스트에 있는지 확인합니다. 대표 음식 종류가 나타나면, 그 이후의 항목들은 해당 카테고리에 매핑됩니다. 자료의 형태가 '한식'같은 음식 분류가 먼저 나오고, 이후 '김치찌개', '된장찌개' 같은 한식에 속한 음식들이 나오는 패턴임을 확인하고 이를 이용한 것입니다.
음식 종류 리스트와 카테고리 리스트를 정의하고, make_dict_to_mapping
함수를 사용하여 매핑 딕셔너리를 생성합니다.
# 음식 종류와 카테고리 리스트 정의
food_items = food_df['음식종류'].unique()
categories = ['한식', '중식', '일식', '양식']
# 매핑 딕셔너리 생성
category_mapping = make_dict_to_mapping(food_items, categories)
생성된 딕셔너리를 확인해 보면 위와 같습니다. 이제 이 딕셔너리를 활용해 카테고리 매핑을 할 수 있습니다.
# '음식종류' 열을 '분류2'로 매핑
food_df['분류2'] = food_df['음식종류'].map(category_mapping)
이 방식은 매핑 규칙이 복잡하거나 매핑해야 할 항목이 많을 때 효과적으로 사용할 수 있습니다. 데이터에 동적으로 적응하는 매핑 방식을 통해, 데이터 세트의 유연성과 분석 가능성을 높일 수 있습니다.
'분류'컬럼과 '분류2'컬럼을 만드는 과정이 조금 다르긴 했지만 결과는 동일한 것을 확인할 수 있습니다.
네, 다음으로는 데이터 분석 과정에서 생성된 '분류' 컬럼의 결과를 분석하고, 카테고리 매핑이 데이터 분석에 어떤 도움을 주는지에 대한 토론을 진행하는 항목이 남아있습니다. 이 부분에서는 카테고리 매핑을 통해 얻은 결과를 탐색하고, 이 결과가 데이터 분석에서 어떻게 활용될 수 있는지를 다루겠습니다.
'분류' 컬럼이 추가된 food_df
데이터 프레임을 통해, 각 음식이 어떤 카테고리에 속하는지를 파악할 수 있습니다. 이 데이터를 기반으로 다양한 분석을 수행할 수 있습니다. 예를 들어, 각 카테고리별로 음식의 수를 계산하거나, 주재료와 카테고리 간의 관계를 탐색할 수 있습니다.
카테고리 매핑은 데이터를 구조화하고, 데이터에서 유의미한 패턴을 발견하는 데 중요한 역할을 합니다. 특히, 복잡하거나 다양한 데이터를 보다 명확하게 이해하고자 할 때 유용합니다. 이 과정을 통해 얻은 인사이트는 데이터 기반 의사결정, 추천 시스템 개발, 고객 세분화 등 다양한 분야에서 활용될 수 있습니다.
카테고리 매핑을 통해 데이터 분석의 정확도를 높이고, 데이터의 가치를 극대화할 수 있습니다. 이러한 방법론은 데이터 과학자, 분석가, 그리고 데이터 기반 의사결정을 하는 모든 이들에게 중요한 도구가 됩니다.