반응형
Pandas의 apply로 사용자 정의 함수 적용하기: 데이터프레임 변환의 혁신
데이터 분석의 세계에 발을 들여놓았다면, Pandas 라이브러리가 얼마나 강력한 도구인지 잘 알고 계실 것입니다. 특히 apply 메서드는 데이터프레임의 각 요소에 대해 사용자 정의 함수를 손쉽게 적용할 수 있게 해주며, 정교한 데이터 변환과 처리를 가능하게 합니다. 이번 포스팅에서는 pandas.apply 메서드를 통해 사용자 정의 함수를 적용하는 방법에 대해 알아보겠습니다.
Pandas apply 메서드 소개
apply 메서드는 데이터프레임의 행 또는 열에 대해 직접적으로 함수를 적용하는 매우 유용한 도구입니다. 데이터프레임의 각 요소에 대해 동일한 신뢰성을 유지하면서도, 다양한 변환 작업을 수행할 수 있어 분석의 효율성이 높아집니다. 간단한 계산부터 복잡한 변형까지, 사용자 정의 함수와 함께 사용할 수 있는 무한한 가능성이 열립니다.
함수 시그니처
DataFrame.apply(func, axis=0)
매개변수:
- func: 적용할 사용자 정의 함수입니다.
- axis: 함수를 적용할 축을 설정합니다. (0은 열, 1은 행)
반환 값:
- 함수를 적용한 결과로 데이터프레임을 반환합니다.
사용 예제
기본 예제
다음은 pandas.apply 메서드를 사용하여 간단한 사용자 정의 함수를 데이터프레임에 적용하는 예제입니다.
import pandas as pd
# 샘플 데이터프레임 생성
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 사용자의 정의 함수
def square(x):
return x ** 2
# apply 메서드를 사용하여 함수 적용
squared_df = df.apply(square)
print(squared_df)
# 출력:
# A B
# 0 1 16
# 1 4 25
# 2 9 36
복잡한 예제
사용자 정의 함수는 여러 매개변수를 받을 수 있으며, 다양한 열에 대한 복잡한 처리를 수행할 수 있습니다.
import pandas as pd
# 샘플 데이터프레임 생성
data = {'이름': ['Alice', 'Bob', 'Charlie'],
'점수': [82, 90, 85],
'수업 참여': [1, 0, 1]}
df = pd.DataFrame(data)
# 사용자 정의 함수: 점수에 따라 등급 부여
def assign_grade(row):
if row['점수'] >= 90:
return 'A'
elif row['점수'] >= 80:
return 'B'
else:
return 'C'
# apply 메서드와 axis=1을 사용하여 행 단위로 함수 적용
df['성적'] = df.apply(assign_grade, axis=1)
print(df)
# 출력:
# 이름 점수 수업 참여 성적
# 0 Alice 82 1 B
# 1 Bob 90 0 A
# 2 Charlie 85 1 B
결론
pandas.apply 메서드는 단순한 변환부터 복잡한 로직까지 사용자 정의 함수를 적용하는 데 필요한 유연성과 편리함을 제공합니다. 이를 통해 데이터프레임을 효과적으로 변환하여 귀찮은 수작업에서 해방될 수 있습니다.
- 지금 바로 사용자 정의 함수를 만들어 데이터프레임을 변환해 보세요!
- 새로운 인사이트를 발견하고, 데이터 분석의 재미를 느껴보세요!
반응형
'Python > Pandas' 카테고리의 다른 글
pandas IndexError: The indices for the DataFrame are not aligned 오류 해결하기 (0) | 2025.05.07 |
---|---|
pandas.astype로 데이터형 변환하기 (0) | 2025.05.07 |
pandas AttributeError: 'series' object has no attribute 'to_dict' 오류 해결하기 (0) | 2025.05.06 |
pandas AttributeError: 'Series' object has no attribute 'astype' 오류 해결하기 (0) | 2025.05.06 |
pandas Series의 문자열 함수 활용하기 (0) | 2025.05.06 |