딕셔너리를 이용한 카테고리 매핑

소환인·2023년 11월 10일
0

스터디노트

목록 보기
21/48
post-thumbnail

1. 시작하며

카테고리 매핑이란

데이터 분석에서 카테고리 매핑은 데이터를 미리 정해진 범주에 맞게 분류하는 과정입니다. 예를 들어, 음식을 아시안, 패스트푸드, 디저트 같은 유형별로 구분하는 것이 카테고리 매핑의 예시입니다. 이 과정은 데이터를 분석하기 쉽게 만들고, 더 깊은 이해를 가능하게 합니다.

2. 데이터 준비

데이터 프레임 구조 및 내용

이번 포스트에서는 '음식종류', '주재료', 그리고 '인기도'를 포함하는 데이터 프레임 food_df를 사용합니다. 이 데이터 프레임은 각각의 음식과 그에 대한 정보를 담고 있습니다. 예를 들어, '김치찌개'는 주재료로 '김치'를 가지며, '인기도'는 '높음'으로 표시됩니다. 이 데이터 세트는 다음과 같이 구성됩니다:

import pandas as pd

# 예시 데이터 수정
data = {
    '음식종류': ['한식', '김치찌개', '된장찌개', '불고기', '중식', '짜장면', '탕수육', '일식', '스시', '규동', '양식', '햄버거', '스테이크'],
    '주재료': ['-', '김치', '된장', '소고기', '-', '면', '돼지고기', '-', '생선', '소고기', '-', '소고기', '소고기'],
    '인기도': ['높음', '높음', '중간', '높음', '높음', '높음', '중간', '높음', '높음', '중간', '높음', '높음', '높음']
}

# 판다스 데이터 프레임 생성
food_df = pd.DataFrame(data)

이 데이터 프레임은 음식 종류에 대한 기본적인 정보와 함께, 각 음식의 인기도를 나타내는 추가적인 정보를 제공합니다.

이 데이터 프레임은 카테고리 매핑을 수행하여 각 음식을 적절한 카테고리로 분류하는 데 사용될 것입니다. 다음 단계에서는 이 데이터를 활용하여 '분류' 컬럼을 만드는 카테고리 매핑 과정을 살펴보겠습니다.

3. 카테고리 매핑

카테고리 매핑을 위한 함수 정의

'분류' 컬럼을 생성하기 위해, 사용자 정의 함수 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의 '음식종류' 컬럼에 적용하여, 각 음식을 적절한 카테고리로 분류합니다. 이 과정을 통해, 원래의 데이터에 새로운 차원의 정보를 추가하게 되며, 이 정보는 추후 분석이나 시각화 작업에 중요한 역할을 할 수 있습니다.

4. 카테고리 매핑: 딕셔너리 활용

매핑을 위한 딕셔너리 생성

이번에는 각 음식을 적절한 카테고리로 분류하기 위해 딕셔너리를 사용하는 방식을 살펴보겠습니다. 이 접근법에서는 '음식종류'를 특정 카테고리에 매핑하는 딕셔너리를 먼저 생성합니다. 이 딕셔너리는 각 음식 종류를 해당하는 카테고리로 매핑하는 역할을 합니다.

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'컬럼을 만드는 과정이 조금 다르긴 했지만 결과는 동일한 것을 확인할 수 있습니다.

네, 다음으로는 데이터 분석 과정에서 생성된 '분류' 컬럼의 결과를 분석하고, 카테고리 매핑이 데이터 분석에 어떤 도움을 주는지에 대한 토론을 진행하는 항목이 남아있습니다. 이 부분에서는 카테고리 매핑을 통해 얻은 결과를 탐색하고, 이 결과가 데이터 분석에서 어떻게 활용될 수 있는지를 다루겠습니다.

5. 정리

'분류' 컬럼의 분석

'분류' 컬럼이 추가된 food_df 데이터 프레임을 통해, 각 음식이 어떤 카테고리에 속하는지를 파악할 수 있습니다. 이 데이터를 기반으로 다양한 분석을 수행할 수 있습니다. 예를 들어, 각 카테고리별로 음식의 수를 계산하거나, 주재료와 카테고리 간의 관계를 탐색할 수 있습니다.

카테고리 매핑의 중요성

카테고리 매핑은 데이터를 구조화하고, 데이터에서 유의미한 패턴을 발견하는 데 중요한 역할을 합니다. 특히, 복잡하거나 다양한 데이터를 보다 명확하게 이해하고자 할 때 유용합니다. 이 과정을 통해 얻은 인사이트는 데이터 기반 의사결정, 추천 시스템 개발, 고객 세분화 등 다양한 분야에서 활용될 수 있습니다.

카테고리 매핑을 통해 데이터 분석의 정확도를 높이고, 데이터의 가치를 극대화할 수 있습니다. 이러한 방법론은 데이터 과학자, 분석가, 그리고 데이터 기반 의사결정을 하는 모든 이들에게 중요한 도구가 됩니다.

profile
돌고돌아

0개의 댓글