데이터 분석을 할 때, 데이터를 정리하고 요약하는 것이 매우 중요합니다. 특히 Pandas의 groupby() 함수는 데이터를 특정 기준으로 나누고 요약하는 데 유용합니다. 이 글에서는 데이터를 그룹화하고 다양한 통계값을 계산하는 방법을 쉽게 설명하겠습니다.
1. 데이터 그룹화 (Groupby)
groupby() 함수는 데이터를 특정 열의 값을 기준으로 묶은 후, 그 그룹별로 통계 계산을 수행할 수 있습니다. 예를 들어, 제품 판매 데이터를 카테고리별로 묶어서 각 카테고리의 매출 평균을 계산할 수 있습니다 .
1.1 groupby() 함수란?
groupby()는 데이터프레임에서 특정 열의 값을 기준으로 데이터를 그룹으로 묶어주는 함수입니다. 기본적으로 이 함수는 데이터를 "그룹"으로 나누고, 이 그룹에 대해 집계 함수(예: 평균, 합계)를 적용할 수 있게 도와줍니다.
예시:
제품 판매 데이터를 분석할 때, 제품의 카테고리별로 매출을 보고 싶다면 groupby('category')를 사용하여 데이터를 카테고리별로 그룹화하고, 그 후 매출의 평균이나 합계 등의 값을 구할 수 있습니다.
아래는 간단한 예시 데이터입니다.
import pandas as pd
# 샘플 데이터 생성
data = {
'category': ['A', 'B', 'A', 'B', 'A', 'B', 'C', 'C'],
'sales': [100, 200, 150, 50, 300, 120, 400, 500]
}
df = pd.DataFrame(data)
위 코드를 실행하면 아래와 같은 데이터프레임이 생성됩니다.
Category | Sales |
A | 100 |
B | 200 |
A | 150 |
B | 50 |
A | 300 |
B | 120 |
C | 400 |
C | 500 |
이 데이터는 category와 sales라는 두 개의 열로 구성되어 있으며, 이제 groupby() 함수를 사용해 category 열을 기준으로 데이터를 그룹화할 수 있습니다 .
1.2 groupby() 함수로 데이터 그룹화하기
groupby() 함수는 다음과 같이 사용할 수 있습니다 .
# 'category' 열을 기준으로 그룹화
grouped_df = df.groupby('category')
이 코드는 category 열을 기준으로 데이터를 그룹화합니다. groupby() 함수는 데이터프레임을 여러 그룹으로 나누고, 그 그룹에 대해 다양한 집계 함수(예: 평균, 합계)를 적용할 수 있는 기반을 제공합니다.
예를 들어, 카테고리별로 sales 열의 평균을 구하고 싶다면 다음과 같은 방식으로 계산할 수 있습니다.
# 각 그룹의 'sales' 평균 계산
grouped_mean = grouped_df['sales'].mean()
print(grouped_mean)
이 코드를 실행하면 각 카테고리별 평균 매출이 출력됩니다. 이렇게 groupby() 함수를 사용하면 데이터를 그룹화하고, 그 그룹별로 다양한 통계값을 계산할 수 있습니다.
2. 집계 함수 적용하기
groupby() 함수는 다양한 집계 함수와 함께 사용할 수 있습니다. 여기에서는 몇 가지 대표적인 집계 함수를 사용하여 데이터를 분석하는 방법을 소개하겠습니다.
2.1 평균 구하기
카테고리별로 sales 열의 평균을 구하려면 아래 코드를 사용합니다.
grouped_df = df.groupby('category')['sales'].mean()
print(grouped_df)
이 코드는 카테고리별로 sales의 평균을 계산해 출력합니다 .
Category | 평균 매출 |
A | 183.33 |
B | 123.33 |
C | 450.00 |
이 코드에서는 category 열을 기준으로 데이터를 묶고, 그 그룹의 평균 매출을 계산했습니다.
2.2 합계 구하기
카테고리별 sales 열의 합계를 구하고 싶다면 아래와 같이 sum() 함수를 사용합니다 .
grouped_sum = df.groupby('category')['sales'].sum()
print(grouped_sum)
결과는 다음과 같습니다.
Category | 총 매출 |
A | 550 |
B | 370 |
C | 900 |
2.3 최대값과 최소값 구하기
각 그룹의 최대 매출과 최소 매출을 구하려면 max()와 min() 함수를 사용할 수 있습니다.
grouped_max = df.groupby('category')['sales'].max()
grouped_min = df.groupby('category')['sales'].min()
print("최대값:\n", grouped_max)
print("최소값:\n", grouped_min)
결과는 다음과 같습니다:
최대값:
Category | 최대 매출 |
A | 300 |
B | 200 |
C | 500 |
최소값:
Category | 최소 매출 |
A | 100 |
B | 50 |
C | 400 |
3. 여러 집계 함수 동시에 적용하기
한 번에 여러 통계값을 구하고 싶다면 agg() 함수를 사용할 수 있습니다. 예를 들어, 평균, 합계, 최대값, 최소값을 동시에 구할 수 있습니다.
grouped_agg = df.groupby('category')['sales'].agg(['mean', 'sum', 'max', 'min'])
print(grouped_agg)
결과는 다음과 같습니다.
Category | 평균 매출 | 총 매출 | 최대 매출 | 최소 매출 |
A | 183.33 | 550 | 300 | 100 |
B | 123.33 | 370 | 200 | 50 |
C | 450.00 | 900 | 500 | 400 |
agg() 함수는 다양한 통계값을 한 번에 구할 수 있게 해줍니다. 이렇게 하면 각 카테고리별로 필요한 통계 정보를 빠르게 확인할 수 있습니다.
groupby() 함수는 데이터를 그룹화하여 요약할 수 있는 매우 강력한 도구입니다. 이번 글에서는 데이터를 그룹화하고, 평균, 합계, 최대값, 최소값을 구하는 방법을 알아봤습니다. 앞으로 데이터 분석을 할 때, 이 기능을 활용하면 더욱 효율적으로 데이터를 다룰 수 있습니다!
'공부 > 판다스(Pandas)' 카테고리의 다른 글
Pandas로 배우는 기본 통계 함수와 심화 분석 함수 활용법 (0) | 2024.10.18 |
---|---|
Pandas로 배우는 피벗 테이블과 교차 테이블/ 데이터 요약 및 관계 분석 (0) | 2024.10.17 |
Pandas로 배우는 데이터 전처리(정렬, 필터링, 중복 처리, 변환과 치환) (1) | 2024.10.12 |
Pandas를 활용한 데이터 탐색 방법(데이터 조회, 인덱싱, 슬라이싱, 결측값 처리) (0) | 2024.10.11 |
Pandas의 기본 데이터 구조 이해하기/Series와 DataFrame (0) | 2024.10.04 |