본문 바로가기
프로그래밍/Python 관련 정보

[Pandas] groupby + agg 의 활용

by 물박사의 저장공간 2025. 2. 5.

2025.02.24 - [프로그래밍/Python 관련 정보] - [Pandas] Table of Contents


판다스 DataFrame에서 데이터를 처리할 때, 칼럼 별로 다른 집계를 사용한다든가 한 칼럼에 여러 집계를 하고 싶을 때가 있습니다. SQL로 비유하자면 id별 groupby 후 select를 할 때 avg(A_col), sum(B_col), avg(B_col) 을 한꺼번에 계산하는 상황을 떠올리면 될 것 같습니다. 

 

이 때는 agg()를 활용해주면 됩니다. 

더보기
import pandas as pd

data = {
    '카테고리': ['A', 'B', 'A', 'B', 'C', 'A', 'C'],
    '값1': [10, 20, 30, 40, 50, 60, 70],
    '값2': [100, 200, 300, 400, 500, 600, 700]
}

df = pd.DataFrame(data)
print(df)

 

한 칼럼에 여러 집계함수를 적용해 주고 싶으면

df.groupby('카테고리').agg(['mean', 'sum'])
          값1              값2          
         mean sum      mean  sum
카테고리                              
A       33.333333 100     333.333333 1000
B       30.000000  60     300.000000  600
C       60.000000 120    600.000000 1200

 

각각의 열에 대해서 다른 집계함수를 적용해주고 싶으면

df.groupby('카테고리').agg({'값1': 'sum', '값2': 'mean'})
          값1    값2
카테고리               
A       100  333.333333
B        60  300.000000
C       120  600.000000

 

와 같이 사용해주면 됩니다. 

 

참고로 lambda함수를 써서 커스터마이징도 가능합니다. 

df.groupby('카테고리').agg({'값1': lambda x: x.max() - x.min(), '값2': 'sum'})