GroupBy와 집계 함수
Pandas
에서 가장 유용한 기능 중 하나는 데이터를 그룹화하고 각 그룹에 대해 계산을 수행하는 능력입니다.
이는 지역별 매출, 학급별 평균 점수, 상품별 매출 같은 범주별 패턴을 분석할 때 유용합니다.
groupby()
메서드는 하나 이상의 열 값을 기준으로 데이터를 여러 그룹으로 나눕니다.
그룹화한 뒤에는 다음과 같은 집계 함수를 적용할 수 있습니다.
sum()
: 그룹별 합계mean()
: 그룹별 평균count()
: 그룹의 행 수max()
: 그룹별 최댓값min()
: 그룹별 최솟값
GroupBy 예제
여러 도시(예: 서울, 부산, 대구)의 매출 거래 데이터가 있다고 가정해 보겠습니다.
이 데이터에 대해서는 다음과 같은 작업을 할 수 있습니다.
- 도시별 총매출 계산
- 매장별 평균 거래 금액 구하기
- 권역(지역)별 거래 건수 세기
Pandas
를 사용하면 몇 줄의 코드로 쉽게 처리할 수 있습니다. 예를 들어 도시별 총매출을 계산하려면 다음과 같이 작성할 수 있습니다.
도시별 총매출 계산
import pandas as pd
df = pd.DataFrame({
"도시": ["서울", "서울", "부산", "부산", "대구", "대구"],
"매출액": [100000, 150000, 200000, 250000, 300000, 350000]
})
df.groupby("도시")["매출액"].sum()
# 출력:
# 도시
# 서울 250000
# 부산 450000
# 대구 650000
어떻게 사용할까요?
groupby()
메서드는 다음과 같은 기본 패턴에 따라 사용할 수 있습니다.
기본 GroupBy 문법
df.groupby("열이름")["대상_열"].agg("집계_함수")
또한 .agg()
를 사용하면 한 번에 여러 함수를 적용할 수 있습니다.
예를 들어 카테고리별 금액에 대해 합계, 평균, 개수를 한 번에 계산하려면 다음과 같이 작성할 수 있습니다.
여러 집계를 한 번에 적용
df = pd.DataFrame({
"Category": ["A", "A", "B", "B", "C", "C"],
"Amount": [100, 200, 300, 400, 500, 600]
})
df.groupby("Category")["Amount"].agg(["sum", "mean", "count"])
# 출력:
# sum mean count
# 0 300 150.0 2
# 1 700 350.0 2
# 2 1100 550.0 2
출력 결과에서 sum
은 합계, mean
은 평균, count
는 개수를 의미합니다.
0
은 카테고리 A
, 1
은 카테고리 B
, 2
은 카테고리 C
를 의미합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!