반응형
아래 데이터를 agg로 집계하기
import pandas as pd
df = pd.DataFrame({
'도시': ['서울', '서울', '부산', '부산', '대구'],
'이름': ['A', 'B', 'C', 'D', 'E'],
'점수': [90, 80, 70, 60, 85]
})
df

agg를 이용해서 한 번에 집계하기
df.groupby('도시').agg({
'점수': ['mean', 'sum', 'count']
})

변수명 변경하기
키워드 인자 형식(argument for named aggregation) 문법을 이용하여 아래와 같이 변경할 수 있다.
df.groupby('group_col').agg(
새로운컬럼명 = ('원본컬럼명', '집계함수')
)
예시는 다음과 같다.
df.groupby('도시').agg(
CITY_MEAN=('점수', 'mean'),
CITY_SUM=('점수', 'sum'),
CITY_COUN=('점수', 'count')
)

custom 함수
- agg는 컬럼 단위로 그룹 데이터를 받기 때문에 각 컬럼을 동시에 사용하는 함수 apply를 사용
import pandas as pd
import numpy as np
# 예시 데이터 생성
np.random.seed(42)
data = pd.DataFrame({
'Category': np.random.choice(['A', 'B', 'C'], size=20),
'Value1': np.random.randint(1, 10, size=20),
'Value2': np.random.randint(1, 10, size=20) # 0 나눗셈 방지
})
print("원본 데이터:")
print(data)
# 커스텀 함수 정의 (각 행 단위)
def custom_func(df):
return (df['Value1'] ** 2 / df['Value2']).sum() # 그룹 내 합계 예시
# Category별 적용
result = data.groupby('Category').apply(custom_func)
result

반응형
댓글