[빅분기 실기] 판다스 (pandas) 그룹핑

2024. 11. 9. 23:46빅데이터 분석기사

반응형

1. 그룹핑 (Grouping)

데이터를 다양한 방식으로 집계하고 분석하는 데는 groupby()를 사용한다.

특정 컬럼을 기준으로 여러 그룹을 나누고 각 그룹에 대한 합계, 평균, 최대, 최소, 빈도 등을 구할 수 있다.

 

데이터를 불러온다.

 

import pandas as pd

df = pd.read_csv('cafe4.csv')  # https://kdh9797-devwiki.tistory.com/85
df.head()

 

1-1. 그룹 기준 1개

원산지를 기준으로 평균값을 계산해 보자.

 

df.groupby('원산지').mean(numeric_only=True)

 

groupby 결과

 

원산지를 기준으로 그룹이 만들어진다.

수치형 데이터인 '가격', '칼로리', '이벤트가'의 평균을 확인할 수 있다.

 

1-2. 집계 연산

mean() 평균
sum() 합계
max(), min() 최대, 최소
count() 개수 (결측치 제외)
size() 개수 (모든 값 빈도, 결측치 포함)

 

df.groupby('원산지').sum(numeric_only=True)

 

sum() 결과

 

df.groupby('원산지').max()

 

max() 결과

 

df.groupby('원산지').min()

 

min() 결과

 

df.groupby('원산지').count()

 

count() 결과

 

df.groupby('원산지').size()

 

size() 결과

 

1-3. 그룹 기준 2개 이상

2개 이상일 때는 리스트 형태로 컬럼을 입력한다.

df.groupby(['원산지', '칼로리']).mean(numeric_only=True)

 

그룹 기준 2개 이상 결과

 

1-4. agg()

agg()는 여러 개의 컬럼에 대해 다양한 집계 연산을 동시에 수행할 수 있다.

 

df.groupby(['원산지', '메뉴']).agg(['mean', 'sum'])

 

agg를 사용한 평균과 합계

 

1-5. reset_index()

그룹핑된 데이터프레임의 인덱스를 보면 기존과 모양이 다른 묶음이 되어 있다.

이 상태에서 추가적인 데이터 처리 또는 특정 값을 선택해 출력해야 한다면 reset_index()를 붙여준다.

 

df.groupby(['원산지', '칼로리']).mean(numeric_only=True).reset_index()

 

reset_index로 데이터프레임 재구성