본문 바로가기

카테고리 없음

Python : Pandas Dataframe의 groupby, pivot_Table에 대한 완벽 가이드

 Pandas는 데이터 조작과 분석을 위해 설계된 강력하고 유연한 Python 라이브러리입니다. Pandas는 Series와 DataFrame과 같은 기본 데이터 구조를 제공하여 구조화된 데이터를 효율적으로 처리할 수 있습니다. 직관적인 문법과 다양한 기능 덕분에 데이터 과학자, 분석가, 엔지니어들에게 필수 도구로 자리 잡고 있습니다.

 

Dataframe

DataFrame은 Pandas에서 제공하는 2차원 데이터 구조로, 크기가 변경 가능하며 이질적인 데이터를 담을 수 있습니다. 관계형 데이터베이스의 테이블이나 Excel의 스프레드시트와 유사하며, 행(row)과 열(column)로 구성되어 있습니다.

 

DataFrame은 보통 아래와 같이 사용합니다. 

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Salary': [50000, 60000, 70000]
}

df = pd.DataFrame(data)
print(df)

#출력
      Name  Age  Salary
0    Alice   25   50000
1      Bob   30   60000
2  Charlie   35   70000

 

이번 블로그에서는 Dataframe의 Groupby  메소드와 Pivot_table 메소드에 대해서 설명해볼까 합니다.

 

groupby 메서드

 

groupby는 데이터를 하나 이상의 열(column)을 기준으로 그룹화하여 합계, 평균, 개수와 같은 집계 연산을 수행할 수 있는 메서드입니다.

 

주요 특징:

 

데이터를 그룹으로 나눕니다.

각 그룹에 독립적으로 함수를 적용합니다.

결과를 새로운 DataFrame으로 반환합니다.

 

예제:

# 샘플 데이터
data = {
    'Department': ['HR', 'IT', 'HR', 'Finance', 'IT', 'Finance'],
    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
    'Salary': [50000, 70000, 60000, 80000, 75000, 85000]
}

df = pd.DataFrame(data)

# 부서별 평균 급여 계산
grouped = df.groupby('Department')['Salary'].mean()
print(grouped)

#출력
Department
Finance    82500.0
HR         55000.0
IT         72500.0
Name: Salary, dtype: float64

 

pivot_table 메서드

 

pivot_table은 데이터를 요약하고 재구성하여 테이블 형식으로 정리하는 메서드로, Excel의 피벗 테이블과 유사합니다. 다차원 데이터를 분석할 때 특히 유용합니다.

 

주요 매개변수:

 

values: 집계할 열(column)을 지정.

index: 행(row)을 지정.

columns: 열(column)을 지정.

aggfunc: 집계 함수 지정 (기본값은 mean).

 

예제:

# 샘플 데이터
data = {
    'Department': ['HR', 'IT', 'HR', 'Finance', 'IT', 'Finance'],
    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
    'Salary': [50000, 70000, 60000, 80000, 75000, 85000],
    'Years': [2, 5, 3, 10, 6, 15]
}

df = pd.DataFrame(data)

# 피벗 테이블 생성
pivot = pd.pivot_table(df, 
                       values='Salary', 
                       index='Department', 
                       columns='Years', 
                       aggfunc='mean', 
                       fill_value=0)
print(pivot)

#출력
Years        2      3      5      6     10     15
Department                                          
Finance       0      0      0      0  80000  85000
HR        50000  60000      0      0      0      0
IT            0      0  70000  75000      0      0

 

Group By와 Pivot Table의 차이점

기능 groupby pivot_table
목적 그룹별로 데이터를 집계. 데이터를 테이블 형식으로 요약.
출력 형식 Series 또는 DataFrame 반환. 피벗 스타일 테이블 반환.
집계 함수 적용 방식 .apply() 또는 .agg() 메서드 사용. aggfunc 매개변수로 설정.
다차원 데이터 처리 계층적 인덱싱(Hierarchical Indexing) 제한. 다차원 피벗 분석 가능.

 

결론

Pandas의 groupbypivot_table은 데이터 분석에 있어 필수적인 도구입니다. groupby는 데이터를 그룹화하고 변환하는 데 강점을 가지며, pivot_table은 다차원 데이터를 재구성하고 요약하는 데 유용합니다. 이 두 메서드의 기능과 차이점을 이해하면 데이터 분석 작업의 효율성을 크게 향상시킬 수 있습니다.