[Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)

2025. 4. 24. 13:00·python/Pandas | Numpy
728x90

map()은 Pandas에서 **단일 열(Series)**의 값을 변환할 때 가장 직관적이고 빠르게 사용할 수 있는 함수다.
아래와 같은 상황에서 특히 유용하다:

  • 숫자를 등급으로 변환하고 싶을 때
  • 특정 키워드를 다른 텍스트로 바꾸고 싶을 때
  • 조건 기반 라벨링을 한 줄로 하고 싶을 때
  • 단일 열에만 함수 적용이 필요한 경우

 

예제 데이터

import pandas as pd

df = pd.DataFrame({
    'score': [95, 82, 67, 74, 59],
    'gender': ['M', 'F', 'F', 'M', 'M']
})


기본 문법

Series.map(func_or_dict)

 

  • func_or_dict: 함수, 딕셔너리, Series 가능
  • 반환값은 Series

1. 예제: 숫자 점수를 등급으로 변환 (함수 기반)

def to_grade(x):
    if x >= 90: return 'A'
    elif x >= 80: return 'B'
    elif x >= 70: return 'C'
    else: return 'D'

df['grade'] = df['score'].map(to_grade)

 

→ map()으로 각 행의 값을 지정된 함수에 넣어 변환

 

 

2. 예제: 간단한 lambda로 변환

df['passed'] = df['score'].map(lambda x: 'Y' if x >= 70 else 'N')

→ apply()보다 가볍고 가독성 좋음 (단일 열일 경우)

 

 

3. 예제: 딕셔너리 기반 값 치환

gender_map = {'M': '남성', 'F': '여성'}
df['gender_kr'] = df['gender'].map(gender_map)

→ 'M' → '남성', 'F' → '여성'으로 값 매핑

map(dict)은 .replace()와 유사하지만 Series 전용이며 반환도 Series

 

 

4. 예제: 결측치 포함된 경우

df['gender'].map({'M': '남성'})

→ 매핑되지 않은 값은 NaN 처리됨

필요한 경우 .fillna()와 함께 사용

 

 

5. 예제: 열 값 계산

df['bonus'] = df['score'].map(lambda x: x * 0.1)

→ 수치 계산을 열 단위로 수행할 때도 유용

 


map()과 apply() 차이점

항목 map() apply()
대상 Series Series or DataFrame
입력 가능 함수 / 딕셔너리 / Series 함수만 가능 (복잡한 연산 포함)
목적 값 치환, 변환 범용 함수 적용
속도 빠름 비교적 느림

예제: 등급 & 보너스 동시 처리

df['grade'] = df['score'].map(lambda x: 'A' if x >= 90 else 'B' if x >= 80 else 'C')
df['bonus'] = df['score'].map(lambda x: round(x * 0.05, 2))

 

 

 

map()은 Pandas의 Series 전용 변환 도구로,
조건 기반 라벨링, 값 변환, 매핑 치환 등 단일 열 데이터 가공 시 가장 많이 쓰이는 함수다.

특히 apply()와 혼동되는 경우가 많지만,
단일 열 + 단순 연산이면 무조건 map이 더 빠르고 간결하다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환  (0) 2025.04.29
[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용  (0) 2025.04.29
[Pandas] explode() (리스트가 들어있는 셀 행마다 분해)  (1) 2025.04.24
[Pandas] eval() (열 간 수식을 짧고 빠르게 처리)  (0) 2025.04.24
[Pandas] query() (loc보다 더 깔끔하게 조건 필터링)  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환
  • [Pandas] applymap() - DataFrame 전체 셀에 함수를 적용
  • [Pandas] explode() (리스트가 들어있는 셀 행마다 분해)
  • [Pandas] eval() (열 간 수식을 짧고 빠르게 처리)
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (160)
      • python (47)
        • selenium (4)
        • algorithm (10)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (36)
      • Data Scientist (3)
      • Data Analysis (11)
      • Computer Science (36)
      • Why? (16)
      • 마음가짐 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)
상단으로

티스토리툴바