PROGRESS
8 / 13
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
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)
HINT
힌트: "그룹으로 묶다"라는 의미의 영어 단어인 groupby를 사용합니다.
실행 결과 예시
급여 상여금 부서 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) |
💡 핵심: 열을 지정하면 해당 열만, 생략하면 모든 숫자 열에 대해 집계합니다.