Skip to main content
GroupBy는 agg만 아는 상태와 agg/transform/filter/apply를 구분해서 쓰는 상태의 생산성 차이가 큽니다. 이 문서는 자주 쓰는 연산 패턴을 한 번에 정리합니다.

핵심 구분

메서드출력 형태주 용도
agg그룹당 1행집계 리포트
transform원본과 같은 길이행 단위 피처 생성
filter원본 일부 행조건 기반 그룹 제거
apply자유 형태복합 로직

패턴 예시

# 1) agg: 그룹 요약
summary = (
    df.groupby("segment")
      .agg(avg_sales=("sales", "mean"), p90_sales=("sales", lambda s: s.quantile(0.9)))
      .reset_index()
)

# 2) transform: 그룹 내 표준화
mean_by_seg = df.groupby("segment")["sales"].transform("mean")
std_by_seg = df.groupby("segment")["sales"].transform("std")
df["sales_z"] = (df["sales"] - mean_by_seg) / std_by_seg

# 3) filter: 샘플 수가 작은 그룹 제거
df_filtered = df.groupby("segment").filter(lambda g: len(g) >= 30)

apply를 줄이는 기준

apply는 유연하지만 느립니다. 먼저 agg, transform, where, np.select 조합으로 대체 가능한지 확인합니다.

이어서 볼 문서