1. Groupby 함수 이해
Pandas의 groupby 함수는 데이터를 원하는 기준에 따라 그룹으로 분류하고, 이렇게 분류된 그룹에 대해 다양한 연산을 수행할 수 있습니다. 이러한 방식은 SQL의 GROUP BY 구문과 유사합니다. 아래 코드에서 groupby 함수는 "Animal" 열을 기준으로 데이터를 그룹화하고, 각 그룹의 내용을 출력합니다.
import pandas as pd
# DataFrame 생성
df = pd.DataFrame({
'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'],
'Max Speed': [380., 370., 24., 26.],
'Weight': [1.5, 1.7, 0.3, 0.2]
})
# 그룹화
grouped = df.groupby("Animal")
# 그룹화 결과 확인
for name, group in grouped:
print(name)
print(group)
print("\n")
# Falcon
# Animal Max Speed Weight
# 0 Falcon 380.0 1.5
# 1 Falcon 370.0 1.7
#
#
# Parrot
# Animal Max Speed Weight
# 2 Parrot 24.0 0.3
# 3 Parrot 26.0 0.2
groupby 함수는 여러 매개변수를 가지고 있습니다.
- by : 이 매개변수에는 그룹화를 하고자 하는 열 또는 열의 목록을 전달합니다. 특정 열 또는 열의 조합에 따라 그룹화를 수행합니다.
- axis : 이 매개변수는 그룹화를 수행하려는 축을 지정합니다. 기본값은 0입니다.
- level : 이 매개변수는 멀티 인덱스(MultiIndex)에서 레벨에 따라 그룹화를 수행합니다.
- as_index : 이 매개변수는 True일 때 그룹 레이블을 인덱스로 사용합니다. 기본값은 True입니다. False로 설정하면, 그룹화 열이 출력 결과에 열로 유지되며 인덱스로 사용되지 않습니다.
- sort : 이 매개변수는 그룹 키에 따라 그룹을 정렬할지 여부를 결정합니다. 기본값은 True입니다. False로 설정하면, 그룹화는 키의 발견 순서대로 수행됩니다.
- group_keys : 이 매개변수는 각 그룹의 키를 결과에 추가할지 여부를 결정합니다. 기본값은 True입니다.
- squeeze : 이 매개변수는 가능한 경우 반환된 그룹을 Series로 압축할지 여부를 결정합니다. 기본값은 False입니다.
- observed : 이 매개변수는 카테고리(Categorical) 형태의 열이 있는 데이터를 그룹화할 때 사용되며, True로 설정하면 관찰된 카테고리만을 그룹화합니다.
2. Groupby를 이용한 연산 (Sum, Mean 등)
그룹화된 데이터에는 다양한 통계 함수를 적용할 수 있습니다. 아래 코드에서는 각각 그룹화된 데이터에 대해 평균(mean), 합계(sum), 최대값(max) 연산을 적용합니다.
# 그룹화된 데이터에 mean 함수 적용
print(grouped.mean())
# Max Speed Weight
# Animal
# Falcon 375.0 1.60
# Parrot 25.0 0.25
# 그룹화된 데이터에 sum 함수 적용
print(grouped.sum())
# Max Speed Weight
# Animal
# Falcon 750.0 3.2
# Parrot 50.0 0.5
# 그룹화된 데이터에 max 함수 적용
print(grouped.max())
# Max Speed Weight
# Animal
# Falcon 380.0 1.7
# Parrot 26.0 0.3