< * 파이썬에서 apply 함수 사용하기 * >
◆ 파이썬에서 apply 함수는 pandas 라이브러리의 데이터프레임이나 시리즈에서
각 행 또는 열에 사용자 정의 함수를 적용하는 데 사용된다.
◆ 이를 활용하면 데이터 전처리, 변환, 계산 등을 간편하게 수행할 수 있다.
1. apply 기본 사용법
apply는 DataFrame이나 Series 객체에 대해 작동하며, 각각 다음과 같은 방식으로 사용할 수 있다.
(1) Series에 적용
__________________________________________________________
import pandas as pd
# 샘플 데이터 생성
data = pd.Series([1, 2, 3, 4, 5])
# 각 요소를 제곱하는 함수 적용
result = data.apply(lambda x: x ** 2)
print(result)
------------------------------------------------------------------
출력:
0 1
1 4
2 9
3 16
4 25
dtype: int64
(2) DataFrame에 적용
데이터프레임에 대해 apply를 사용하면 행(axis=1) 또는 열(axis=0) 단위로 함수를 적용할 수 있다.
______________________________________________________________________
# 샘플 데이터프레임 생성
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 각 열의 합 계산
result = df.apply(lambda x: x.sum(), axis=0) # axis=0: 열 단위
print(result)
---------------------------------------------------------------------------------
출력 :
A 6
B 15
dtype: int64
2. 사용자 정의 함수 적용
apply를 통해 복잡한 사용자 정의 함수를 적용할 수 있다.
(1) 조건에 따라 값 변경
_________________________________________________________________________
# 조건에 따라 값을 변경하는 함수
def classify(x):
if x > 2:
return 'High'
else:
return 'Low'
# 데이터에 적용
df['A_class'] = df['A'].apply(classify)
print(df)
------------------------------------------------------------------------------------
출력 :
A B A_class
0 1 4 Low
1 2 5 Low
2 3 6 High
(2) 문자열 데이터 처리
__________________________________________________________________________
# 문자열 데이터프레임
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Score': [85, 95, 70]
})
# 이름의 길이를 계산하는 함수 적용
df['Name_length'] = df['Name'].apply(len)
print(df)
----------------------------------------------------------------------------------
출력 :
Name Score Name_length
0 Alice 85 5
1 Bob 95 3
2 Charlie 70 7
3. DataFrame에서 행 단위로 적용 (axis=1)
열 간의 연산이나 행 단위의 처리가 필요한 경우 axis=1로 설정한다.
_______< 예시: 행 단위 계산 >_________________________________________________
# 두 열의 합을 계산하는 함수
df['Sum'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)
-----------------------------------------------------------------------------------------
출력 :
A B Sum
0 1 4 5
1 2 5 7
2 3 6 9
4. applymap: 데이터프레임 전체 요소에 적용
apply와 다르게, applymap은 데이터프레임의 개별 요소에 함수를 적용한다.
_____<예시>____________________________________________________________________
# 모든 요소에 제곱 계산
result = df[['A', 'B']].applymap(lambda x: x ** 2)
print(result)
------------------------------------------------------------------------------------------
출력 :
A B
0 1 16
1 4 25
2 9 36
5. 예제
( 1 ) 결측값 처리
__________________________________________________________________________
# 샘플 데이터프레임
df = pd.DataFrame({
'A': [1, None, 3],
'B': [4, 5, None]
})
# 결측값을 0으로 채우기
df = df.apply(lambda col: col.fillna(0), axis=0)
print(df)
-----------------------------------------------------------------------------------
출력 :
A B
0 1.0 4.0
1 0.0 5.0
2 3.0 0.0
( 2 ) 복잡한 문자열 변환
_________________________________________________________________________________
# 문자열 데이터 처리
df = pd.DataFrame({'Text': ['Hello World', 'Python is great', 'apply functions']})
# 각 문자열에서 단어 개수 계산
df['Word_Count'] = df['Text'].apply(lambda x: len(x.split()))
print(df)
--------------------------------------------------------------------------------------------
출력 :
Text Word_Count
0 Hello World 2
1 Python is great 3
2 apply functions 2