데이터분석/전처리
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