inflearn logo
강의

Course

Instructor

[Renewal] Python Data Analysis for Beginners (Easy! Master the entire process of preprocessing, pandas, and visualization) [Data Analysis/Science Part 1]

apply()함수

201

akbmom

1 asked

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(무언가) 가 들어 있는 형태로 사용될 거 같았는데 그러지 않아서요...

python pandas

Answer 1

1

funcoding

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

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 메서드에 의해 자동으로 호출되므로, 함수 호출 시 명시적으로 매개변수를 넣지 않아도 계산이 수행됩니다.

감사합니다.

잔재미코딩 드림

Python 3 표시 없습니다.

0

54

1

강의실습 말고 강의에 대한 자료(pdf)가 없을까요?

0

66

1

구글 코랩과 아나콘다

0

81

1

강의와 다르게 오류가 뜨는 이유가 뭘까요?

0

97

1

COVID-19-master 관련 등 자료 누락

0

83

1

수업자료에 python_core_summary.ipynb 파일이 포함되어 있지 않습니다!

1

95

1

json.dumps관련된 질문

0

71

1

빅분기대비

0

112

1

파이썬으로 Plain Text 포멧 파일 다루기 연습문제 질문

0

93

1

강의자료 어디서 다운로드받나요?

0

138

1

pandas 라이브러리의 quotechar 인자에 대해 질문드립니다

0

99

1

iplot 에러 문제

1

200

1

플래그

0

75

1

플래그 라이브러리

0

83

1

CSV 파일 쓰기 다른 기법(사전 타입으로 쓰기) 관련

0

179

1

CSV 파일 읽을 때 오류

0

192

1

read() 함수 사용할 때 3번째 줄에 data로 출력 또는 print(data)로 출력 차이

0

136

1

강의 교재 및 실습 파일 제공되나요?

0

180

1

deep_data_and_visual 파일에서 에러가 납니다.

0

181

1

pandas groupby sum 질문

1

271

1

pandas_eda 자료 맨아래 heatmap 숫자가 안나옵니다

0

350

2

pandas_eda 힛맵에서 숫자가 안떠요

0

254

1

수업 자료에 pandas_basic 파일이 없습니다..!

0

276

1

EDA기본패턴 적용을 위한 pandas문법에서 필요한 파일이 파이썬에서 안옮겨집니다

0

203

1