본문 바로가기

공부/판다스(Pandas)

Pandas로 배우는 데이터 그룹화와 집계/효율적인 데이터 분석 방법

데이터 분석을 할 때, 데이터를 정리하고 요약하는 것이 매우 중요합니다. 특히 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() 함수는 데이터를 그룹화하여 요약할 수 있는 매우 강력한 도구입니다. 이번 글에서는 데이터를 그룹화하고, 평균, 합계, 최대값, 최소값을 구하는 방법을 알아봤습니다. 앞으로 데이터 분석을 할 때, 이 기능을 활용하면 더욱 효율적으로 데이터를 다룰 수 있습니다!