파이썬/데이터프레임 다루기

Pandas apply vs map vs applymap – 언제, 어디에 써야 할까?

Data Jun 2025. 3. 25. 11:25

데이터프레임을 다룰 때 자주 마주치는 세 가지 함수:
바로 apply, map, applymap.

이름도 비슷하고, 전부 뭔가 "함수를 적용"하는 느낌이라 처음 접하면 많이 헷갈리죠.
하지만 적용 대상과 범위가 다르며, 상황에 따라 최적의 선택이 따로 있습니다.

이번 포스팅에서는 이 세 함수의 차이를 명확하게 정리하고, 예제로 완벽하게 이해해봅시다! 

 

한눈에 정리: map, apply, applymap

 

예제 데이터프레임 준비

import pandas as pd

df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '국어': [80, 90, 85],
    '영어': [78, 95, 88]
})

print(df)

 

 

map() – Series의 원소 하나하나에 함수 적용

map()은 Series에만 사용 가능하며, 각 요소에 하나씩 함수나 값을 적용합니다.

df['이름'] = df['이름'].map(lambda x: '학생-' + x)

주의

  • DataFrame에는 직접 쓸 수 없습니다. (df.map() ❌)

 

apply() – Series나 DataFrame에 "함수 통째로" 적용

  • Series에 apply → 각 원소에 함수 적용
  • DataFrame에 apply → 행 또는 열 단위로 적용

▶ 예: 국어 점수에 +5점 보너스 (Series에 적용)

df['국어'] = df['국어'].apply(lambda x: x + 5)

▶ 예: 각 행(row)별 평균 점수 계산

df['평균'] = df[['국어', '영어']].apply(lambda row: row.mean(), axis=1)

 

핵심 포인트

  • axis=0: 열(column) 기준 (기본값)
  • axis=1: 행(row) 기준

 

applymap() – DataFrame의 모든 원소에 함수 적용

  • DataFrame 전 요소를 하나씩 순회하며 함수 적용
  • 숫자, 문자열, 어떤 타입이든 전부 변환하고 싶을 때 유용

▶ 예: 점수를 문자열로 변환

df[['국어', '영어']] = df[['국어', '영어']].applymap(lambda x: str(x) + '점')

주의

  • applymap은 DataFrame 전용입니다! Series에는 적용할 수 없습니다.

 

어떤 걸 언제 써야 할까?

 

실무 팁

  • 반복문보다 빠르고 직관적인 apply, map을 적극 활용하세요!
  • 성능이 중요한 대규모 데이터에서는 vectorized 연산(넘파이 방식)이 더 빠를 수 있어요.
  • applymap()은 사용 빈도가 낮지만, 전처리 단계에서 유용할 수 있습니다.

 

마무리

Pandas의 apply, map, applymap은 데이터 전처리와 변환에서 가장 자주 쓰이는 도구입니다.
각 함수의 특징을 잘 이해하고 상황에 맞게 사용하면, 코드가 훨씬 더 깔끔하고 효율적해집니다.