데이터 분석을 위한 Pandas GroupBy 사용 방법

데이터 분석을 위한 GroupBy 메서드는 Pandas 라이브러리의 매우 강력한 도구로 거의 모든 분석에서 필수적으로 사용됩니다. 특정 기준에 따라 대규모 데이터 세트를 더 작은 그룹으로 분할 및 요약할 수 있습니다. 이러한 작업은 통계 계산 또는 데이터 집계와 같은 다양한 작업에 유용하게 활용됩니다. 이는 일반적인 sql 쿼리문 중 “group by”와 동일한 명령문이라고 이해하시면 됩니다. 다만, sql구문과 pandas 구문의 활용법이 달라 조금은 낯설게 느껴질 수 있지만, 자주 사용하다 보면 금방 익숙해 질 수 있습니다.
가장 빈번하게 기본적으로 활용할 수 있는 용도는 데이터 집합을 단일 열로 그룹화 하는 것입니다. 예를 들어 아래와 같이 학생 이름, 수강 중인 과정 및 성적에 대한 열이 포함된 가상의 데이터 세트가 있다고 가정해 보겠습니다.


GroupBy 구문 활용 방법

import pandas as pd

df = pd.DataFrame({‘name’: [‘Alice’, ‘Bob’, ‘Charlie’, ‘Alice’, ‘Bob’, ‘Charlie’],
‘course’: [‘math’, ‘science’, ‘english’, ‘math’, ‘science’, ‘english’],
‘grade’: [90, 80, 95, 85, 75, 95]})

df

 namecoursegrade
0Alicemath90
1Bobscience80
2Charlieenglish95
3Alicemath85
4Bobscience75
5Charlieenglish95

GroupBy 메서드를 사용하여 다음과 같이 “course” 별로 데이터를 그룹화할 수 있습니다.
(물론 “name”별로도 데이터를 그룹화할 수 있습니다.)

grouped = df.groupby(‘course’)
grouped

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000255B3CC2EE0>

이렇게 하면 그룹에서 다양한 작업을 수행할 수 있는 GroupBy 개체가 생성됩니다. 예를 들어 다음과 같이 각 과정의 평균 성적을 계산할 수 있습니다.

meanGrades = grouped.mean()
print(meanGrades)

         grade
course        
english   95.0
math      87.5
science   77.5

그룹에 대해 더 복잡한 작업을 수행할 수도 있습니다. 예를 들어, 성적을 기준으로 각 과정에서 상위 3명의 학생을 찾고 싶다고 가정해 보겠습니다. apply 메서드와 사용자 정의 함수를 사용하여 이를 수행할 수 있습니다.

def top_three(group):
ooooreturn group.sort_values(by=’grade’, ascending=False).head(3)

top_students = grouped.apply(top_three)
print(top_students)

              name   course  grade
course                            
english 2  Charlie  english     95
        5  Charlie  english     95
math    0    Alice     math     90
        3    Alice     math     85
science 1      Bob  science     80
        4      Bob  science     75

단일 열을 기준으로 그룹화하는 것 뿐만 아니라 GroupBy 메서드를 사용하면 여러 열을 기준으로 그룹화할 수도 있습니다. 예를 들어 “course”와 “name”으로 그룹화한다고 가정해 보겠습니다. 아래와 같이 수행할 수 있습니다.

grouped = df.groupby([‘course’, ‘name’])
meanGrades = grouped.mean()
print(meanGrades)

                 grade
course  name          
english Charlie   95.0
math    Alice     87.5
science Bob       77.5

GroupBy 방법은 Pandas에서 대규모 데이터 세트로 작업하고 분석하기 위한 매우 강력한 도구입니다. 데이터를 더 작은 그룹으로 분할하고 해당 그룹에 대해 다양한 작업을 수행할 수 있으므로 통계 및 집계를 쉽게 계산하고 정렬 및 필터링과 같은 보다 복잡한 작업을 수행할 수 있습니다.