Pandas DataFrame apply() 예제
Pandas DataFrame apply() 함수는 DataFrame의 축을 따라 함수를 적용하는 데 사용됩니다. 함수 구문은 다음과 같습니다.
def apply(
self,
func,
axis=0,
broadcast=None,
raw=False,
reduce=None,
result_type=None,
args=(),
**kwds
)
중요한 매개변수는 다음과 같습니다.
- func: DataFrame의 각 행 또는 열에 적용할 함수입니다.
- 축: 기능이 적용되는 축. 가능한 값은 {0 또는 'index', 1 또는 'columns'}이고 기본값은 0입니다.
- args: 함수에 전달할 위치 인수. 이는 함수에 추가 인수를 전달해야 할 때 유용합니다.
- kwargs: 함수에 전달할 추가 키워드 인수입니다. 이는 추가 키워드 인수를 함수에 전달해야 할 때 유용합니다.
Pandas DataFrame apply() 예제
DataFrame 객체에서 apply() 함수를 사용하는 몇 가지 예를 살펴보겠습니다.
1. DataFrame 요소에 함수 적용
import pandas as pd
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
def square(x):
return x * x
df1 = df.apply(square)
print(df)
print(df1)
산출:
A B
0 1 10
1 2 20
A B
0 1 100
1 4 400
apply() 함수가 호출되는 DataFrame은 변경되지 않습니다. apply() 함수는 해당 요소에 함수를 적용한 후 새 DataFrame 객체를 반환합니다.
2. 람다와 함께 적용()
위의 예를 보면 square() 함수는 매우 간단합니다. 쉽게 람다 함수로 변환할 수 있습니다. apply() 함수를 호출하면서 람다 함수를 생성할 수 있습니다.
df1 = df.apply(lambda x: x * x)
출력은 마지막 예제와 동일하게 유지됩니다.
3. 축을 따라 적용()
축을 따라 함수를 적용할 수 있습니다. 그러나 마지막 예에서는 축을 사용하지 않습니다. 함수는 DataFrame의 모든 요소에 적용됩니다. DataFrame 행 또는 열에서 집계 함수를 호출하면 축 사용이 명확해집니다. 열 또는 인덱스를 따라 요소의 합계를 얻고 싶다고 가정해 보겠습니다. 축 인수의 값에 따라 출력이 달라집니다.
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(np.sum, axis=0)
print(df1)
df1 = df.apply(np.sum, axis=1)
print(df1)
산출:
A 3
B 30
dtype: int64
0 11
1 22
dtype: int64
첫 번째 예에서는 열을 따라 요소의 합계가 계산됩니다. 두 번째 예에서는 행을 따라 있는 요소의 합계가 계산됩니다.
4. 인수가 있는 DataFrame apply()
하나 이상의 매개변수를 받는 함수를 적용하고 싶다고 가정해 보겠습니다. 이 경우 'args' 인수를 사용하여 추가 매개변수를 전달할 수 있습니다.
import pandas as pd
def sum(x, y, z):
return x + y + z
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(sum, args=(1, 2))
print(df1)
산출:
A B
0 4 13
1 5 23
5. 위치 및 키워드 인수가 있는 DataFrame apply()
'args' 및 'kwargs' 매개변수를 모두 사용하여 위치 및 키워드 인수를 함수에 전달하는 예를 살펴보겠습니다.
import pandas as pd
def sum(x, y, z, m):
return (x + y + z) * m
df = pd.DataFrame({'A': [1, 2], 'B': [10, 20]})
df1 = df.apply(sum, args=(1, 2), m=10)
print(df1)
산출:
A B
0 40 130
1 50 230
DataFrame applymap() 함수
함수를 요소별로 적용하려면 applymap() 함수를 사용하면 됩니다. 이 함수에는 추가 인수가 없습니다. 함수는 각 요소에 적용되고 반환된 값은 결과 DataFrame 개체를 만드는 데 사용됩니다.
import pandas as pd
import math
df = pd.DataFrame({'A': [1, 4], 'B': [100, 400]})
df1 = df.applymap(math.sqrt)
print(df)
print(df1)
산출:
A B
0 1 100
1 4 400
A B
0 1.0 10.0
1 2.0 20.0
applymap() 함수를 사용하여 모든 요소 값을 대문자로 변환하는 또 다른 예를 살펴보겠습니다.
import pandas as pd
df = pd.DataFrame({'Name': ['Pankaj', 'Meghna'], 'Role': ['ceo', 'cto']})
df1 = df.applymap(str.upper)
print(df)
print(df1)
산출:
Name Role
0 Pankaj ceo
1 Meghna cto
Name Role
0 PANKAJ CEO
1 MEGHNA CTO
참조
- Python Pandas 모듈 자습서
- Pandas apply() API 문서