[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용

2025. 4. 29. 09:23·python/Pandas | Numpy
728x90

Pandas를 사용하다 보면 다음과 같은 작업이 필요할 때가 있습니다.

  • 모든 수치에 단위를 붙이고 싶을 때
  • 전체 셀의 포맷을 문자열로 바꾸고 싶을 때
  • 결측값을 특정 텍스트로 대체하거나, 셀에 조건 기반 포맷팅을 하고 싶을 때

이럴 때 DataFrame 전체 셀에 함수를 적용할 수 있는 applymap() 이 강력한 도구가 됩니다.

 

먼저 예제 데이터를 확인하겠습니다.

 

예제 데이터

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'math': [90, 80, 70],
    'eng': [85, 75, 65],
    'sci': [88, 78, np.nan]
})

기본 문법

DataFrame.applymap(func)
  • 각 셀에 대해 func(value) 를 수행
  • 반환 결과는 DataFrame

 

1. 예제: 숫자에 단위 붙이기

df.applymap(lambda x: f"{int(x)}점" if pd.notna(x) else "결측")

→ 각 셀에 "점"을 붙이고, 결측치는 "결측"으로 처리

 

2. 예제: 셀 값 제곱하기

df.applymap(lambda x: x ** 2 if pd.notna(x) else x)

→ 수치 데이터 전체 제곱 계산

 

3. 예제: 모든 셀 문자열화

df.applymap(str)

→ 셀을 전부 문자열로 변환 (형태 통일 목적)

 

4. 예제: 셀 포맷 일괄 처리 (%, 소수점 등)

df.applymap(lambda x: f"{x:.1f}%" if pd.notna(x) else "")

→ 퍼센트 표기 등, 시각화 전 전처리에 유용

 

5. 예제: 결측치 치환

df.applymap(lambda x: x if pd.notna(x) else 0)

→ fillna()로 대체해도 되지만, 다른 조건과 함께 쓰면 applymap()이 더 유연함


applymap()과 다른 함수들과의 차이

함수 대상 목적 예시
map() Series 개별 값 변환 s.map(lambda x: x + 1)
apply() Series / DataFrame 열 전체 또는 행 전체에 함수 df.apply(sum, axis=1)
applymap() DataFrame 각 셀에 함수 적용 df.applymap(str)

→  applymap()은 DataFrame 전용이다. Series에는 사용 불가!

 

 

여기서 또 하나의 Tip을 보여드리면 

수치 데이터를 문자열로 치환 후 시각화용 저장도 코드 한줄로 가능합니다.

df.applymap(lambda x: f"{int(x)}점" if pd.notna(x) else "미제출").to_csv("scores_clean.csv", index=False)

 

 

applymap()은 Pandas의 모든 셀을 동일하게 처리할 때 매우 유용한 함수입니다.
단일 열이면 map(), 행/열 단위면 apply(),
셀 단위 전체 처리라면 applymap() 함수를 사용해 보시기 바랍니다.

 

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

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

[Pandas] clip() - 이상값 방어의 핵심  (0) 2025.05.02
[Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환  (0) 2025.04.29
[Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)  (0) 2025.04.24
[Pandas] explode() (리스트가 들어있는 셀 행마다 분해)  (1) 2025.04.24
[Pandas] eval() (열 간 수식을 짧고 빠르게 처리)  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] clip() - 이상값 방어의 핵심
  • [Pandas] where() - 조건을 만족하는 값은 살리고, 아니면 치환
  • [Pandas] map() (조건 라벨링, 값 변환, 딕셔너리 매핑까지 Series 변환의 핵심)
  • [Pandas] explode() (리스트가 들어있는 셀 행마다 분해)
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (146)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] applymap() - DataFrame 전체 셀에 함수를 적용
상단으로

티스토리툴바