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 is a backend software engineer at Matrice.ai.
LinkedIn