Python apply, map 및 applymap의 차이점

Suraj Joshi 2023년1월30일
  1. pandas.DataFrame.applymap()
  2. Pandas의map()메서드
  3. Pandas의apply()메서드
Python apply, map 및 applymap의 차이점

이 튜토리얼은 Pandas에서apply(),map()applymap()메소드의 차이점을 설명합니다.

applymap()과 관련된 함수는 주어진 DataFrame의 모든 요소에 적용되므로applymap()메소드는 DataFrames에만 정의됩니다. 마찬가지로apply()메소드와 관련된 함수는 DataFrame 또는Series의 모든 요소에 적용 할 수 있으므로 Series 및 DataFrame 객체 모두에 대해apply()메소드가 정의됩니다. map()메소드는 Pandas의Series객체에 대해서만 정의 할 수 있습니다.

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print(df, "\n")

출력:

   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

Pandas에서apply(), map()applymap()메소드의 차이점을 설명하기 위해 위의 예에 표시된 DataFrame df를 사용합니다.

pandas.DataFrame.applymap()

통사론

DataFrame.applymap(func, na_action=None)

DataFrame의 모든 요소에func함수를 적용합니다.

예: applymap()메서드를 사용하여 DataFrame의 항목 변경

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print("Initial DataFrame:")
print(df, "\n")

scaled_df = df.applymap(lambda a: a * 10)

print("Scaled DataFrame:")
print(scaled_df, "\n")

출력:

Initial DataFrame:
   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

Scaled DataFrame:
   Col 1  Col 2  Col 3
A    300    230    850
B    400    350    870
C    500    650    900
D    600    450    890

df DataFrame의 모든 요소를 ​​곱하고 결과를scaled_df DataFrame에 저장합니다. lambda함수를applymap()함수에 인수로 전달합니다.이 함수는 입력에10을 곱하여 값을 반환합니다. 따라서 DataFrame df의 모든 요소는 10 씩 조정됩니다.

또한for루프를 사용하여df DataFrame의 각 요소를 반복 할 수 있지만 코드를 읽기 어렵고 복잡하고 효율성이 떨어집니다. applymap()은 코드를 더 읽기 쉽고 효율적으로 만드는 대체 접근 방식입니다.

수학적 연산 외에도 DataFrame의 요소에 대해 다른 연산을 수행 할 수도 있습니다.

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print("Initial DataFrame:")
print(df, "\n")

altered_df = df.applymap(lambda a: str(a) + ".00")

print("Altered DataFrame:")
print(altered_df, "\n")

출력:

Initial DataFrame:
   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

Altered DataFrame:
   Col 1  Col 2  Col 3
A  30.00  23.00  85.00
B  40.00  35.00  87.00
C  50.00  65.00  90.00
D  60.00  45.00  89.00

DataFrame df의 각 요소 끝에.00을 추가합니다.

Pandas의map()메서드

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print("Initial DataFrame:")
print(df, "\n")

df["Col 1"] = df["Col 1"].map(lambda x: x / 100)

print("DataFrame after altering Col 1:")
print(df)

출력:

Initial DataFrame:
   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

DataFrame after altering Col 1:
   Col 1  Col 2  Col 3
A    0.3     23     85
B    0.4     35     87
C    0.5     65     90
D    0.6     45     89

DataFrame의 특정 열에 만map()메서드를 사용할 수 있습니다.

Pandas의apply()메서드

Pandas에서 전체 데이터 프레임을 변경하는apply()메서드

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print("Initial DataFrame:")
print(df, "\n")

altered_df = df.apply(lambda x: x / 100)

print("Altered DataFrame:")
print(altered_df, "\n")

출력:

Initial DataFrame:
   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

Altered DataFrame:
   Col 1  Col 2  Col 3
A    0.3   0.23   0.85
B    0.4   0.35   0.87
C    0.5   0.65   0.90
D    0.6   0.45   0.89

Pandas에서만 특정 열을 변경하는apply()메서드

import pandas as pd

df = pd.DataFrame(
    {
        "Col 1": [30, 40, 50, 60],
        "Col 2": [23, 35, 65, 45],
        "Col 3": [85, 87, 90, 89],
    },
    index=["A", "B", "C", "D"],
)

print("Initial DataFrame:")
print(df, "\n")

df["Col 1"] = df["Col 1"].apply(lambda x: x / 100)

print("DataFrame after altering Col 1:")
print(df)

출력:

Initial DataFrame:
   Col 1  Col 2  Col 3
A     30     23     85
B     40     35     87
C     50     65     90
D     60     45     89

DataFrame after altering Col 1:
   Col 1  Col 2  Col 3
A    0.3     23     85
B    0.4     35     87
C    0.5     65     90
D    0.6     45     89

따라서 위의 예에서apply()메소드를 사용하여 전체 DataFrame의 모든 요소 또는 특정 열의 모든 요소에 특정 함수를 적용 할 수 있음을 알 수 있습니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Pandas DataFrame