본문 바로가기
🛠️Skill/Python

[Python] 여러개 함수 사용 agg()

by Istj_eff 2022. 11. 20.

다른 라이브러리 함수를 적용하는데 사용되는 메서드들이 있다.

  • 테이블 형태로 정리해주는 함수 어플리케이션 : pip()
  • 행 혹은 열로 정리해주는 함수 어플리케이션 : apply()
  • 집합 API : agg( ), transform( )
  • 요소별 적용 함수 : applymap( )

 

💡 agg( )
한번에 여러개의 함수를 동시에 입력하고 결과를 출력할 수 있음

 

✔️ agg() 메서드 기본 예시

sample_df=pd.DataFrame([[9.1,1.2,1.3,1.4],[2.1,9.2,9.3,2.4],[3.1,3.2,3.3,3.4]],
                       index=['a','b','c'], columns=['A','B','C','D'])
sample_df

[out]
	A	  B	  C	  D
a	9.1	1.2	1.3	1.4
b	2.1	9.2	9.3	2.4
c	3.1	3.2	3.3	3.4
# 메서드 적용           # 문자열을 이용한 메서드 적용
sample_df.agg(np.sum)  =  sample_df.agg('sum')

[out]
A    14.3
B    13.6
C    13.9
D     7.2
dtype: float64
# axis이용한 적용 축 변경
sample_df.agg('sum',axis=1)

[out]
a    13.0
b    23.0
c    13.0
dtype: float64

# series로 메서드 적용
sample_df['A'].agg('sum') => 14.299999999999999

 

 

✔️agg() 메서드 여러 함수 입력 예시

sample_df.agg(['min'])

[out]
		 A   B   C   D
min	2.1	1.2	1.3	1.4
sample_df.agg(['sum','mean','max','min'])

[out]
					A	       B	       C	     D
sum	  14.300000	13.600000	13.900000	7.2
mean	4.766667	4.533333	4.633333	2.4
max	  9.100000	9.200000	9.300000	3.4
min	  2.100000	1.200000	1.300000	1.4
sample_df.agg(['sum','mean','max','min'], axis=1)

[out]
	sum	 mean	 max	min
a	13.0	3.25	9.1	1.2
b	23.0	5.75	9.3	2.1
c	13.0	3.25	3.4	3.1
sample_df['B'].agg(['sum','mean','max','min'])

[out]
sum     13.600000
mean     4.533333
max      9.200000
min      1.200000
Name: B, dtype: float64

 

 

✔️람다함수

sample_df['B'].agg(['sum',lambda x:x.sum()])

[out]
sum         13.6
<lambda>    13.6
Name: B, dtype: float64

 

 

✔️사용자 정의 함수

def ex_func(x):
    return x.sum()

sample_df['B'].agg(['sum',ex_func])

[out]
sum        13.6
ex_func    13.6
Name: B, dtype: float64
# 이름이 변경된 함수 예제
ex_func.__name__ = 'function name changed'

sample_df['B'].agg(['sum',ex_func])

[out]
sum                      13.6
function name changed    13.6
Name: B, dtype: float64

 

 

✔️딕셔너리

sample_df.agg({'A':'sum','B':'max','C':'min','D':'min'})

[out]
A    14.3
B     9.2
C     1.3
D     1.4
dtype: float64
# 딕셔너리와 리스트
sample_df.agg({'A':['sum','mean'],'B':'max','C':'min','D':'min'})

[out]
			A       	B	   C	 D
sum	  14.300000	NaN	NaN	NaN
mean	4.766667	NaN	NaN	NaN
max	  NaN	      9.2	NaN	NaN
min	  NaN      	NaN	1.3	1.4  # 입력함수가 특정 자료형에 적용될 수 없는 경우 NaN 출력

 

 

✔️여러가지 dtype 예시

sample_df=pd.DataFrame({'A':[1,1,1],'B':[1.1,1.2,1.3],'C':['hi','hello',"what's up"]})

[out]
A	B	C
0	1	1.1	hi
1	1	1.2	hello
2	1	1.3	what's up
sample_df.agg(['sum','mean'])

[out]
			A	    B	    C
sum	  3.0	 3.6	 hihellowhat's up
mean	1.0	 1.2	 NaN
# 사용자 정의 함수 적용
def user_mean_func(x):
    return x.sum()/x.count()

user_mean = user_mean_func
user_mean.__name__ = 'Defined_func'

sample_df.agg(['sum',user_mean,'max','min'])

[out]
							 A	 B	  C
sum	          3.0	3.6	hihellowhat's up
Defined_func	1.0	1.2	NaN
max	          1.0	1.3	what's up
min	          1.0	1.1	hello

댓글