부서별 집계 계산하기 : groupby

30 P
QUESTION 08 #324
특정 기준(부서)으로 데이터를 그룹화하여 평균과 합계를 구하는 프로그램입니다. 빈칸을 채우세요.
main.py
import pandas as pd

data = {
    "부서": ["영업", "IT", "영업", "IT", "인사", "IT"],
    "급여": [5000, 6000, 4800, 6500, 5200, 5800],
    "상여금": [500, 800, 400, 900, 300, 700]
}
df = pd.DataFrame(data)

# 부서별 급여 평균 계산
dept_mean = df.("부서")["급여"].mean()

# 부서별 급여, 상여금 합계 계산
dept_sum = df.("부서").sum()

print(dept_sum)
실행 결과 예시
    급여  상여금
부서          
IT  18300  2400
영업   9800   900
인사   5200   300
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

groupby() 심화 - 특정 열 지정 vs 전체 집계

groupby() 뒤에 열을 지정하는 것과 생략하는 것의 차이를 이해합니다.

코드 비교

# 방법 1: 특정 열만 집계
dept_mean = df.groupby("부서")["급여"].mean()

# 방법 2: 모든 숫자 열 집계
dept_sum = df.groupby("부서").sum()

방법 1: 특정 열 지정

df.groupby("부서")["급여"].mean()
부서
IT    6100.0
영업    4900.0
인사    5200.0

→ "급여" 열의 평균만 계산

방법 2: 전체 숫자 열 집계

df.groupby("부서").sum()
      급여  성과급
부서
IT   18300  2400
영업   9800   900
인사   5200   300

→ 모든 숫자 열(급여, 성과급)의 합계를 계산

동작 과정 (IT 부서)

IT 그룹:
  급여: 6000 + 6500 + 5800 = 18300
  성과급: 800 + 900 + 700 = 2400

groupby 결과의 인덱스

groupby 결과에서 그룹 기준 열("부서")은 인덱스가 됩니다.

       급여  성과급
부서              ← 인덱스로 변환됨
IT   18300  2400
영업   9800   900
인사   5200   300

패턴 정리

코드 결과
df.groupby("부서")["급여"].mean() 급여의 평균 (Series)
df.groupby("부서")["급여"].sum() 급여의 합계 (Series)
df.groupby("부서").mean() 모든 열의 평균 (DataFrame)
df.groupby("부서").sum() 모든 열의 합계 (DataFrame)

💡 핵심: 열을 지정하면 해당 열만, 생략하면 모든 숫자 열에 대해 집계합니다.