PROGRESS
7 / 13
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
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)
HINT
힌트: 데이터를 그룹으로 묶는다는 의미의 영어 단어인 "group by"를 붙여서 사용합니다.
실행 결과 예시
메뉴 김치찌개 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 = "같은 값끼리 묶어서 계산하라"는 의미입니다.