데이터분석/전처리

Data Preprocessing - groupby

2^7 2024. 9. 26. 10:00

1.  groupby의 기본 개념

groupby는 데이터프레임의 특정 열을 기준으로 데이터를 그룹화하고, 그 그룹별로 다양한 연산을 수행할 수 있는 기능으로 그룹화 이후에는 그룹별로 합계(sum), 평균(mean), 최대값(max), 최소값(min) 등의 집계 함수(aggregation)를 적용할 수 있음

2.  groupby 사용법

  • 데이터프레임의 특정 열을 기준으로 그룹화한 후, 집계 함수를 적용하는 것이 기본적인 사용 방법
import pandas as pd

# 예시 데이터프레임 생성
data = {
    'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Values': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)

# 'Category' 열을 기준으로 그룹화하고, 그룹별 합계를 계산
grouped_sum = df.groupby('Category').sum()

print(grouped_sum)
          Values
Category        
A              90
B             120

#Category 열을 기준으로 데이터를 그룹화한 후, 각 그룹에 대해 Values 열의 합계를 계산
  • groupby를 사용하면 단일 집계 함수뿐만 아니라 여러 집계 함수를 한 번에 적용할 수도 있음
# 여러 집계 함수 적용
grouped_agg = df.groupby('Category').agg(['sum', 'mean', 'max'])
print(grouped_agg)
          Values              
             sum mean max
Category                   
A            90  30.0  50
B           120  40.0  60

# sum, mean, max 함수를 각각 Values 열에 적용하여 그룹별로 합계, 평균, 최대값을 계산

 

3.  그룹화된 데이터에 필터링 적용

groupby는 그룹화된 데이터에 조건을 걸어 특정 그룹만을 필터링할 수 있는 기능을 제공

# 그룹의 합계가 100 이상인 그룹만 필터링
filtered_group = grouped_sum[grouped_sum['Values'] >= 100]
print(filtered_group)
          Values
Category        
B             120

 

4.  그룹화된 데이터의 변환

groupby를 활용하면 그룹별로 데이터를 변환할 수 있음

# 그룹별로 데이터의 평균을 기준으로 각 값에서 평균을 뺀 값 계산
df['Diff_from_mean'] = df.groupby('Category')['Values'].transform(lambda x: x - x.mean())
print(df)
  Category  Values  Diff_from_mean
0        A      10           -20.0
1        B      20           -20.0
2        A      30            0.0
3        B      40            0.0
4        A      50           20.0
5        B      60           20.0

#각 그룹 내에서 값의 평균을 구하고, 해당 평균과의 차이를 계산하여 새로운 열(Diff_from_mean)에 저장

참고 문서
Pandas 공식 문서: Group By
Python 데이터 분석 실습: groupby를 활용한 데이터 집계
728x90