Processor

【Pandas】 파이썬에서 apply 함수 사용하기

작성자 임베디드코리아 작성일26-04-16 00:26 조회88회 댓글0건
< * 파이썬에서 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