그룹별 평균 계산하기 : groupby

30 P
QUESTION 07 #323
데이터프레임에서 특정 컬럼(메뉴)을 기준으로 데이터를 그룹화여 각 그룹의 평균을 구하는 프로그램입니다. 빈칸을 채워보세요.
main.py
import pandas as pd

data = {
    "메뉴": ["비빔밥", "김치찌개", "비빔밥", "돈까스", "김치찌개", "비빔밥"],
    "가격": [9000, 8000, 9500, 10000, 8500, 9000],
    "수량": [2, 1, 3, 1, 2, 1]
}
df = pd.DataFrame(data)

# 메뉴별 평균 가격 계산
menu_avg = df.("메뉴")["가격"].mean()

print(menu_avg)
실행 결과 예시
메뉴
김치찌개     8250.0
돈까스      10000.0
비빔밥       9166.666667
Name: 가격, dtype: float64
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

groupby()로 그룹별 집계하기

groupby()는 특정 열의 값이 같은 행끼리 그룹을 만들고, 각 그룹에 대해 합계, 평균 등의 계산을 수행합니다.

기본 문법

df.groupby("기준열")["계산열"].집계함수()

코드 분석

menu_avg = df.groupby("메뉴")["가격"].mean()

이 코드는 3단계로 동작합니다:

동작 과정

1단계: groupby("메뉴") → 메뉴별로 그룹 생성

비빔밥 그룹: 가격 [9000, 9500, 9000]
김치찌개 그룹: 가격 [8000, 8500]
돈까스 그룹: 가격 [10000]

2단계: ["가격"] → 계산할 열 선택

3단계: .mean() → 각 그룹의 평균 계산

비빔밥:  (9000 + 9500 + 9000) / 3 = 9166.67
김치찌개: (8000 + 8500) / 2 = 8250.0
돈까스:  10000 / 1 = 10000.0

groupby의 개념 (엑셀 비유)

엑셀에서 피벗 테이블을 만드는 것과 같습니다:

원본 데이터:                   그룹별 평균:
메뉴      가격                 메뉴      평균가격
비빔밥    9000                 김치찌개    8250
김치찌개   8000     groupby    돈까스     10000
비빔밥    9500     ------→    비빔밥      9167
돈까스   10000
김치찌개   8500
비빔밥    9000

groupby에 사용 가능한 집계 함수

함수 설명
.mean() 그룹별 평균
.sum() 그룹별 합계
.count() 그룹별 개수
.max() 그룹별 최대값
.min() 그룹별 최소값
.median() 그룹별 중간값
.std() 그룹별 표준편차

💡 핵심: groupby = "같은 값끼리 묶어서 계산하라"는 의미입니다.