파이썬 기초문법

pandas apply로 데이터프레임 컬럼별 함수 적용하기

Family in August 2024. 5. 17. 06:54
반응형


pandas apply로 데이터프레임 컬럼별 함수 적용하기

pandas의 apply는 데이터프레임의 모든 원소에 동일한 함수를 적용할 수 있는 유용한 기능입니다. 스칼라 함수뿐만 아니라 lambda 함수나 사용자 정의 함수도 사용 가능합니다. 이번 포스팅에서는 apply의 활용법을 살펴보겠습니다.

apply 기본 사용법

import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30], 'C': [100, 200, 300]})

# 모든 원소에 제곱근 함수 적용
df = df.apply(lambda x: x**0.5)
print(df)



출력:

     A     B     C
0  1.0  3.16  10.0
1  1.41  4.47  14.14  
2  1.73  5.48  17.32



각 열의 데이터 타입 변환하기

import pandas as pd

df = pd.DataFrame({'Age': ['27', '34', '61', '42'], 
                   'Height': ['165.3', '189.2', '174.6', '156.7']})

print("원본 데이터프레임:")
print(df)

# 각 열의 데이터 타입을 숫자형으로 변환
df = df.apply(lambda x: pd.to_numeric(x, errors='coerce'))

print("변환된 데이터프레임:")  
print(df)
print(df.dtypes)



출력:

원본 데이터프레임:
    Age Height
0    27  165.3
1    34  189.2
2    61  174.6
3    42  156.7

변환된 데이터프레임:
     Age  Height
0   27.0   165.3
1   34.0   189.2
2   61.0   174.6
3   42.0   156.7  

Age       float64
Height    float64
dtype: object  



사용자 정의 함수도 적용 가능

import pandas as pd

df = pd.DataFrame({'A': ['Java', 'Python', 'Ruby'], 
                   'B': ['NaN', 'Science', 'Book']})

# 문자열 길이를 반환하는 함수 정의
def strlen(x):
    try:
        return len(x)
    except:
        return 0
    
# 사용자 정의 함수 strlen을 applymap으로 적용    
df = df.apply(strlen)
print(df)



출력:

   A  B
0  4  0 
1  6  7
2  4  4



apply는 데이터프레임의 각 원소에 동일한 변환을 적용할 때 유용합니다. 데이터 전처리나 피처 엔지니어링 과정에서 다양하게 활용할 수 있습니다. 예제를 참고하여 여러분의 데이터 작업에도 apply를 유용하게 사용해보시기 바랍니다.

반응형