인프런 커뮤니티 질문&답변

akbmom님의 프로필 이미지
akbmom

작성한 질문수

처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part2]

apply()함수

작성

·

59

0

pandas_real_data_processing 강의자료에서

def func(df_data):
    print (type(df_data))    
    print (df_data.index)
    print (df_data.values)    
    return df_data

 

를 통해 함수 func을 정의했는데,

df_func = df.apply(func, axis=0)

 

에서 func에 넣어줄 df_data 매개변수가 없었는데 계산결과가 나타난 이유가 궁금합니다.

제 생각엔 func(무언가) 가 들어 있는 형태로 사용될 거 같았는데 그러지 않아서요...

답변 1

0

안녕하세요. 답변 도우미입니다.

Pandas의 apply 메서드를 사용할 때, 함수에 명시적으로 매개변수를 넣지 않아도 함수가 작동하는 이유에 대해 설명드리겠습니다.

apply 메서드는 DataFrame의 각 행 또는 열에 대해 함수를 적용할 수 있도록 설계된 메서드입니다. 사용자가 제공한 함수를 DataFrame의 각 요소(행 또는 열)에 자동으로 적용합니다.

함수 func를 정의하고, 이를 df.apply(func, axis=0)로 호출할 때, Pandas는 df의 각 열을 func의 매개변수로 전달합니다.

### 예제 설명

먼저, func 함수의 정의를 살펴보겠습니다.

```python

def func(df_data):

print(type(df_data))

print(df_data.index)

print(df_data.values)

return df_data

```

이 함수는 매개변수로 df_data를 받아, 그 타입, 인덱스, 값들을 출력한 후, 그대로 반환합니다.

다음으로 df.apply(func, axis=0)의 작동 방식을 설명하겠습니다.

### apply 메서드

apply 메서드는 기본적으로 DataFrame의 각 요소에 대해 지정된 함수를 적용합니다. axis 매개변수는 함수가 적용될 방향을 결정합니다.

- axis=0: 각 열에 대해 함수를 적용

- axis=1: 각 행에 대해 함수를 적용

따라서 df.apply(func, axis=0)을 호출하면 Pandas는 df의 각 열을 순차적으로 func 함수에 전달합니다.

### 예제 코드

아래는 예제 DataFrame과 함께 apply 메서드를 사용하는 코드입니다.

```python

import pandas as pd

# 예제 DataFrame 생성

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}

df = pd.DataFrame(data)

# 함수 정의

def func(df_data):

print(type(df_data))

print(df_data.index)

print(df_data.values)

return df_data

# apply 메서드 사용

df_func = df.apply(func, axis=0)

```

이 코드를 실행하면, func 함수는 df의 각 열에 대해 한 번씩 호출됩니다. 각 열이 func 함수의 df_data 매개변수로 전달되고, 함수는 해당 열의 타입, 인덱스, 값을 출력합니다.

```python

<class 'pandas.core.series.Series'>

RangeIndex(start=0, stop=3, step=1)

[1 2 3]

<class 'pandas.core.series.Series'>

RangeIndex(start=0, stop=3, step=1)

[4 5 6]

<class 'pandas.core.series.Series'>

RangeIndex(start=0, stop=3, step=1)

[7 8 9]

```

위 출력은 각 열이 func 함수에 Series 객체로 전달된 결과입니다.

 

간단히 정리하면,

- df.apply(func, axis=0)는 DataFrame의 각 열을 func 함수에 전달합니다.

- Pandas는 자동으로 각 열을 func 함수의 매개변수로 사용합니다.

- 함수는 각 열의 타입, 인덱스, 값을 출력하고 원래 열을 반환합니다.

이 방식으로 함수가 apply 메서드에 의해 자동으로 호출되므로, 함수 호출 시 명시적으로 매개변수를 넣지 않아도 계산이 수행됩니다.

감사합니다.

잔재미코딩 드림

akbmom님의 프로필 이미지
akbmom

작성한 질문수

질문하기