Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 판다스 데이터프레임 요소별 함수 적용하기 – applymap 활용법

데이터 분석을 하다 보면 데이터프레임의 각 요소(element)에 특정 함수를 일괄 적용해야 하는 경우가 자주 발생합니다. 그런데 모든 함수가 벡터화(vectorized)될 수 있는 것은 아닙니다. 이럴 때 유용하게 사용할 수 있는 것이 바로 판다스의 applymap 함수입니다.

applymap은 데이터프레임의 개별 요소 하나를 입력으로 받아, 변환된 단일 값을 출력으로 반환하는 방식으로 동작합니다. 즉, 데이터프레임의 모든 셀에 대해 지정한 함수가 순차적으로 적용됩니다.

applymap의 주요 특징

  • 데이터프레임의 모든 요소에 함수를 적용합니다.
  • 단일 값을 입력받아 단일 값을 반환하는 함수와 함께 사용해야 합니다.
  • 시리즈(Series)에는 사용할 수 없으며, 오직 데이터프레임 전용 메서드입니다.

예제 코드

import pandas as pd
import numpy as np

my_df = pd.DataFrame(np.random.randn(5,5), columns=['col_1','col_2','col_3','col_4','col_5'])
print("생성된 데이터프레임:")
print(my_df)

my_df.applymap(lambda x: x * 11.45)
print("applymap 함수 적용 후 각 열의 평균값:")
print(my_df.apply(np.mean))

실행 결과

생성된 데이터프레임:
     col_1      col_2      col_3      col_4      col_5
0  -0.671510  -0.860741   0.886484   0.842158   2.182341
1  -1.355763   0.247240  -0.653630  -0.278095   0.163044
2  -0.816203   1.664006   1.555648   1.625890  -0.412338
3  -1.013273  -1.565076   1.297014  -0.303504  -1.623573
4   0.725949  -0.077588  -0.886957   0.433478  -0.300151
applymap 함수 적용 후 각 열의 평균값:
col_1   -0.626160
col_2   -0.118432
col_3    0.439712
col_4    0.463985
col_5    0.001865
dtype: float64

코드 설명

  • pandasnumpy 라이브러리를 임포트하고, 코드 가독성을 위해 별칭(alias)을 지정합니다.

  • numpy의 random.randn 함수를 사용하여 정규분포를 따르는 난수로 구성된 5행 × 5열 크기의 데이터프레임을 생성합니다.

  • 데이터프레임을 정의할 때 columns 매개변수에 리스트 형태로 열 이름(col_1 ~ col_5)을 함께 지정합니다.

  • 생성된 데이터프레임을 콘솔에 출력하여 확인합니다.

  • applymap 함수를 호출하여 데이터프레임의 각 요소에 람다(lambda) 함수를 적용합니다.

  • 여기서 람다 함수는 x * 11.45로 정의되어, 모든 요소에 11.45를 곱하는 연산을 수행합니다.

  • 마지막으로 apply(np.mean)을 통해 각 열별 평균값을 계산하고 결과를 콘솔에 출력합니다.

참고: applymap vs apply vs map

  • applymap: 데이터프레임의 개별 요소에 함수를 적용할 때 사용합니다.

  • apply: 행 또는 열(축) 단위로 함수를 적용할 때 사용합니다. 위 예제에서 my_df.apply(np.mean)는 각 열의 평균을 계산합니다.

  • map: 시리즈(Series) 객체의 개별 요소에 함수를 적용할 때 사용합니다.

이처럼 상황에 맞는 함수를 선택하면 판다스 데이터 처리 작업을 훨씬 효율적으로 수행할 수 있습니다.