웹사이트 검색

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 문서