티스토리 뷰

반응형

1. groupby의 기능

groupby는 pandas 라이브러리에서 제공되는 메서드로, 데이터를 특정 기준으로 그룹화하여 처리할 때 사용합니다. 이를 통해 데이터를 그룹별로 분석하거나 집계할 수 있습니다.

2. groupby 사용 예

가. 예제코드

import pandas as pd

# 데이터프레임 생성
data = {
    '학과': ['컴퓨터공학', '전자공학', '컴퓨터공학', '전자공학', '전자공학'],
    '이름': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
    '점수': [85, 92, 78, 88, 95]
}
df = pd.DataFrame(data)

# 학과를 기준으로 그룹화
grouped = df.groupby('학과')

# 그룹별 평균 점수 계산
average_scores = grouped['점수'].mean()

나. 예제코드 결과

# average_scores 결과
# 학과
# 컴퓨터공학    81.5
# 전자공학     91.666667
# Name: 점수, dtype: float64

다. 자주 사용하는 기능(7가지)

1-1) 그룹별 통계 정보 확인

group_stats = grouped['점수'].describe()

1-2) 그룹별 통계 정보 결과

#           count       mean       std   min    25%   50%    75%   max
# 학과
# 컴퓨터공학    2.0   81.5   4.949749   78.0   79.75   81.5   83.25   85.0
# 전자공학     3.0   91.666667   3.055050   88.0   90.00   92.0   93.5   95.0

2-1) 그룹 내 최대값 찾기

group_max = grouped['점수'].max()

2-2) 그룹 내 최대값 결과

# 학과
# 컴퓨터공학    85
# 전자공학     95
# Name: 점수, dtype: int64

3-1) 그룹별로 데이터 개수 세기

group_counts = grouped['이름'].count()

3-2) 그룹별 데이터 개수 결과

# 학과
# 컴퓨터공학    2
# 전자공학     3
# Name: 이름, dtype: int64

4-1) 그룹 내에서 가장 높은 점수를 받은 학생 선택

group_top = grouped.apply(lambda group: group.loc[group['점수'].idxmax()])

4-2) 그룹 내에서 가장 높은 점수 결과

#      학과     이름  점수
# 학과
# 컴퓨터공학  컴퓨터공학  Alice  85
# 전자공학    전자공학  Ella   95

5-1) 그룹별로 데이터 정렬하여 출력

group_sorted = grouped.apply(lambda group: group.sort_values('점수', ascending=False))

5-2) 그룹별 데이터 정렬 결과

#          학과     이름  점수
# 학과
# 컴퓨터공학  0  컴퓨터공학  Alice  85
#      2  컴퓨터공학  Charlie  78
# 전자공학    4    전자공학  Ella   95
#      3    전자공학  David   88
#      1    전자공학  Bob     92

6-1) 그룹별로 데이터 합산하기

group_sum = grouped['점수'].sum()

6-2) 그룹별 데이터 합산 결과

# 학과
# 컴퓨터공학    163
# 전자공학     275
# Name: 점수, dtype: int64

7-1) 그룹별로 최대 점수와 최대 점수 차이 구하기

group_max_diff = grouped['점수'].apply(lambda group: group.max() - group.min())

7-2) 그룹별 최대 점수와 최대 점수 차이 결과

# 학과
# 컴퓨터공학    7
# 전자공학     7
# Name: 점수, dtype: int64
반응형