본문 바로가기
공부 목록/IT & 프로그래밍

판다스의 apply()함수와 map()함수의 비교 정리

by 독학박사 2023. 5. 30.

목차


    DataFrame.apply()와 DataFrame.map()은 모두 Pandas DataFrame 객체에서 사용되는 메서드입니다. 하지만 사용 목적과 작동 방식에서 차이가 있습니다. 이제 각 측면을 살펴보고 비교해 보겠습니다. 함수의 객체를 보다 직관적으로 표시하기 위해 dataframe.map()을 series.map()이라 표현하겠습니다.

     

     

    유사하지만 다른 apply와 map 함수
    유사하지만 다른 apply와 map 함수

     

    1. 적용대상에서의 비교

     apply() 함수는 dataframe 객체, map() 함수는 series 개체를 대상으로 생성된 메서드입니다.

    DataFrame.apply(): apply()는 DataFrame의 행 또는 열에 함수를 적용합니다. 기본적으로 각 행 또는 열을 Series로 전달하여 함수를 적용합니다.

    Series.map(): map()은 Series 객체에 함수를 적용합니다. 각 요소에 대해 함수를 호출하여 변환합니다.

     

     

    2. 변환 결과에서의 비교

     적용대상의 객체가 dataframe이나 series로 정의되어 있어 반환된 값도 그에 맞게 타입이 결정되어 있습니다.

    DataFrame.apply(): apply()는 함수를 적용한 결과를 반환합니다. 반환 값은 Series나 DataFrame일 수 있습니다.

    Series.map(): map()은 함수를 적용한 결과를 반환합니다. 반환 값은 Series 객체입니다.

     

     

    3. 유연성에서의 비교

     apply() 함수는 dataframe 객체를 대상으로 정의된 메서드로 map() 함수보다는 더 다양하게 사용될 수 있습니다.

    DataFrame.apply(): apply()는 보다 유연한 기능을 제공합니다. 함수에 인자를 전달하거나 사용자 정의 함수를 적용할 수 있습니다. 또한, 축 방향(axis)을 지정하여 행 또는 열에 적용할 수 있습니다.

    Series.map(): map()은 단순한 값 변환에 적합합니다. 주로 Series의 각 요소를 다른 값으로 변환할 때 사용됩니다. 사용자 정의 함수를 적용할 수 없으며, 기본적으로 값을 대응시키는 매핑(mapping)을 수행합니다.

     

    4. apply()와 map() 비교 코드

    import pandas as pd
    
    # DataFrame 생성
    data = {'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]}
    df = pd.DataFrame(data)
    
    # DataFrame.apply() 예제
    # 각 열에 대해 최댓값을 구하는 함수 적용
    max_values = df.apply(max)
    print(max_values)
    # 출력: A    5
    #       B    50
    #       dtype: int64
    
    # 각 행에 대해 합계를 구하는 함수 적용
    row_sums = df.apply(sum, axis=1)
    print(row_sums)
    # 출력: 0    11
    #       1    22
    #       2    33
    #       3    44
    #       4    55
    #       dtype: int64
    
    # DataFrame.map() 예제
    # 각 값에 대해 제곱을 계산하여 변환
    squared_values = df['A'].map(lambda x: x ** 2)
    print(squared_values)
    # 출력: 0     1
    #       1     4
    #       2     9
    #       3    16
    #       4    25
    #       Name: A, dtype: int64
    
    # 각 값에 대해 문자열로 변환하여 매핑
    mapped_values = df['B'].map(str)
    print(mapped_values)
    # 출력: 0    10
    #       1    20
    #       2    30
    #       3    40
    #       4    50
    #       Name: B, dtype: object

     

    위의 예제에서는 DataFrame.apply()를 사용하여 열의 최댓값과 행의 합계를 계산하였습니다. DataFrame.map()을 사용하여 열 'A'의 값을 제곱하고 열 'B'의 값을 문자열로 변환하였습니다. 이를 통해 apply() map()의 차이를 비교할 수 있습니다.

     

     

    5. 마치며

     pandas의 객체에 대한 메서드들인 apply()와 map() 메서드는 그 사용에 있어 유사한 점이 있지만 대상 객체가 다름으로 여러 가지 측면에서 다른 점이 있습니다. 오늘은 그 차이에 대해 설명을 하였고 예제 코드를 통해 어떻게 다른지에 대해 알아보았습니다.