데이터 분석 작업을 하다 보면 데이터프레임(DataFrame)의 축(axis)을 따라 특정 함수를 적용해야 하는 경우가 자주 발생합니다. Pandas에서는 apply() 함수를 사용해 이를 손쉽게 처리할 수 있습니다.
축(Axis)의 기본 동작
축을 별도로 지정하지 않으면 기본적으로 열(column) 방향으로 연산이 수행되며, 이때 각 열은 하나의 배열처럼 취급됩니다. 반대로 axis=1과 같이 축을 명시적으로 지정하면 행(row) 방향으로 연산이 진행됩니다.
apply() 함수는 점(.) 연산자를 통해 데이터프레임 객체에 직접 호출할 수 있습니다. NumPy의 집계 함수(예: np.mean)와 함께 사용하면 각 열의 평균값 등을 한 번에 계산할 수 있습니다.
예제 코드
import pandas as pd
import numpy as np
my_data = {'Age': pd.Series([45, 67, 89, 12, 23]),
'value': pd.Series([8.79, 23.24, 31.98, 78.56, 90.20])}
print("The dataframe is :")
my_df = pd.DataFrame(my_data)
print(my_df)
print("The description of data is :")
print(my_df.apply(np.mean))실행 결과
The dataframe is :
Age value
0 45 8.79
1 67 23.24
2 89 31.98
3 12 78.56
4 23 90.20
The description of data is :
Age 47.200
value 46.554
dtype: float64코드 설명
필요한 라이브러리인 pandas와 numpy를 임포트하고, 사용 편의성을 위해
pd,np라는 별칭(alias)을 지정합니다.키(key)와 값(value)으로 구성된 딕셔너리를 생성합니다. 여기서 값은 실제로 시리즈(Series) 데이터 구조입니다.
이 딕셔너리는 pandas 라이브러리의
DataFrame()함수에 매개변수로 전달되어 데이터프레임을 만드는 데 사용됩니다.생성된 데이터프레임이 콘솔에 출력됩니다.
데이터프레임에
apply(np.mean)을 호출하여 각 열(숫자형 데이터)의 평균값을 계산합니다.계산된 결과가 콘솔에 출력됩니다. Age 열의 평균은 47.2, value 열의 평균은 46.554입니다.
참고: axis 옵션 활용
행 단위로 연산하고 싶다면 my_df.apply(np.sum, axis=1)처럼 axis=1을 지정하면 됩니다. 이 경우 각 행별로 합계가 계산됩니다. 이처럼 apply()는 사용자 정의 함수나 lambda식과도 함께 사용할 수 있어 매우 유연한 데이터 처리가 가능합니다.