본문 바로가기
Language/파이썬

파이썬 판다스 - agg(func, axis, *args, **kwargs)

by javapp 자바앱 2021. 7. 29.
728x90

 

 

pandas.DataFrame.agg — pandas 1.3.0 documentation

list of functions and/or function names, e.g. [np.sum, 'mean']

pandas.pydata.org

Aggregate using one or more operations over the specified axis.

 

자세한 사용법은 판다스 공식 문서에서 확인 가능하다.

 

2021년도_성별 학생수.csv
1.41MB
2021년도_학교 현황.csv
0.99MB

 

데이터 프레임

# 데이터프레임 구조
df.sample()
	학교명		지역	설립구분	1학년	2학년	3학년	4학년	5학년	6학년	
4183	청소초등학교	충청남도	공립	1	1	1	1	1	1

 

df.iloc[:,3:9].agg(['sum','min','max','mean'])
	1학년		2학년		3학년		4학년		5학년		6학년
sum	19145.000000	18909.000000	20443.000000	20014.000000	19924.000000	19298.000000
min	0.000000	0.000000	0.000000	0.000000	0.000000	0.000000
max	15.000000	13.000000	14.000000	13.000000	13.000000	12.000000
mean	3.034554	2.997147	3.240292	3.172294	3.158028	3.058805

반환되는 데이터프레임에서는 인덱스에 함수명들이 들어가고 그에 대한 결과가 값으로 채워지는 것을 확인

 

 

그룹화 활용

class_ = df.groupby(by='지역')['1학년','2학년','3학년','4학년','5학년','6학년','총계'].agg(['mean','max'])
class_
	1학년		2학년		3학년		4학년		5학년		6학년		총계
	mean		max	mean		max	mean		max	mean		max	mean		max	mean		max	mean		max
지역														
강원도	1.665775	8	1.684492	9	1.874332	9	1.858289	9	1.863636	8	1.847594	8	193.521390	1243
경기도	3.775112	15	3.611694	12	3.931784	14	3.814093	12	3.784858	12	3.641679	11	572.653673	1971
경상남도	2.652672	12	2.639313	11	2.853053	13	2.793893	12	2.809160	11	2.692748	10	361.005725	1878
경상북도	1.879684	12	1.956607	11	2.096647	11	2.045365	11	2.001972	10	1.938856	9	252.289941	1817

데이터프레임의 agg 메소드와는 다르게 함수명이 컬럼명으로 설정이 된다.

 

sum, mean, min, max 이외 람다를 활용하여 원하는 함수를 적용할 수 있다.

customer_df = df.groupby('CustomerID').agg({'Sales': sum, 'InvoiceNo': lambda x: x.nunique()})
customer_df
		Sales	InvoiceNo
CustomerID		
12347.0		711.79	1
12348.0		892.80	1
12370.0		1868.02	2
12377.0		1001.52	1
12383.0		600.72	1
...	...	...
18239.0		438.10	1
18245.0		365.73	1
18259.0		376.30	1
18260.0		230.70	1
18269.0		168.60	1

각 컬럼에 함수를 지정할 수 있다.

 

 

컬럼 명도 보기좋게 변경가능하다.

customer_df.columns = ['TotalSales', 'OrderCount']
	TotalSales	OrderCount	AvgOrderValue
CustomerID			
12347.0	711.79	1	711.790
12348.0	892.80	1	892.800
12370.0	1868.02	2	934.010
12377.0	1001.52	1	1001.520
12383.0	600.72	1	600.720
12386.0	258.90	1	258.900
12395.0	679.92	2	339.960
12417.0	291.34	1	291.340
12423.0	237.93	1	237.930
12427.0	303.50	1	303.500
12429.0	1281.50	1	1281.500
12431.0	773.95	2	386.975
12433.0	3787.12	2	1893.560
12441.0	173.55	1	173.550
12471.0	3874.36	4	968.590

댓글