본문 바로가기
Big Data/DataAnalysis & Manipulate

DataFrame groupby()

by Wikinist 2023. 8. 11.

groupby()

groupby() 함수는 Pandas에서 데이터를 그룹화하고 그룹 단위 연산을 수행하는 데 사용되는 핵심 함수입니다. 아래는 groupby() 함수의 시그니처와 예제를 설명해 드리겠습니다.

시그니처

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, dropna=True)

매개변수

by: 그룹화를 위한 열 또는 열의 리스트, 또는 그룹화에 사용할 함수.
axis: 그룹화 기준이 되는 축 (0: 행, 1: 열).
level: MultiIndex를 사용할 경우 그룹화할 레벨.
as_index: 그룹화한 열을 인덱스로 사용할지 여부.
sort: 결과를 정렬할지 여부.
group_keys: 그룹화 키를 인덱스로 추가할지 여부.
squeeze: 그룹이 하나만 있는 경우 Series로 변환할지 여부.
observed: 카테고리가 아닌 값의 그룹화를 제한할지 여부.
dropna: NA 값을 가진 그룹을 제외할지 여부.

groupby 함수에 적용 가능한 함수

아래에는 groupby() 함수와 함께 사용할 수 있는 일부 유용한 함수들을 소개해 드리겠습니다.

집계 함수 (Aggregation Functions)

sum(): 그룹 내 값의 합계 계산
mean(): 그룹 내 값의 평균 계산
median(): 그룹 내 값의 중앙값 계산
min(): 그룹 내 최솟값 계산
max(): 그룹 내 최댓값 계산
count(): 그룹 내 비어있지 않은 값의 개수 계산
size(): 그룹 내 전체 값의 개수 계산
std(): 그룹 내 값의 표준 편차 계산
var(): 그룹 내 값의 분산 계산

커스텀 집계 함수

집계 함수는 사용자 정의 함수로 대체할 수 있습니다. 예를 들어, agg() 함수를 사용하여 그룹화된 데이터에 사용자 정의 함수를 적용할 수 있습니다.

apply() 함수

apply() 함수를 사용하여 그룹 단위로 사용자 정의 함수를 적용할 수 있습니다. 이를 통해 복잡한 연산을 수행할 수 있습니다.

변환 함수 (Transform Functions)

transform(): 그룹 내 값에 대한 변환 작업을 수행합니다. 변환된 결과는 원래 DataFrame의 크기와 동일합니다.

필터링 함수 (Filter Functions)

filter(): 그룹 내 조건을 기반으로 데이터를 필터링합니다.

describe() 함수

그룹화된 데이터에 대한 기술 통계량을 출력합니다.

nth() 함수

각 그룹에서 특정 위치의 값을 선택합니다.

first()와 last() 함수

각 그룹의 첫 번째 또는 마지막 값 선택합니다.

cumsum(), cumprod(), cummax(), cummin() 함수

누적 합계, 누적 곱, 누적 최댓값, 누적 최솟값을 계산합니다.

agg() 함수

agg() 함수를 사용하여 여러 개의 집계 함수를 동시에 적용할 수 있습니다.

예제

다음은 groupby() 함수를 사용한 예제입니다. 이 예제에서는 영화 데이터를 사용하여 장르별로 영화 수와 평균 평점을 계산합니다.

import pandas as pd

# 샘플 데이터 생성
data = {
    'Movie': ['Movie A', 'Movie B', 'Movie C', 'Movie D', 'Movie E'],
    'Genre': ['Action', 'Comedy', 'Action', 'Comedy', 'Drama'],
    'Rating': [8.2, 7.5, 6.9, 8.5, 7.8]
}

df = pd.DataFrame(data)

# 장르별로 그룹화하여 영화 수와 평균 평점 계산
grouped = df.groupby('Genre')
genre_stats = grouped.agg({
    'Movie': 'count',    # 영화 수 계산
    'Rating': 'mean'     # 평균 평점 계산
})

print(genre_stats)

출력 결과:

        Movie    Rating
Genre
Action      2  7.55
Comedy      2  8.0
Drama       1  7.8

이 예제에서는 'Genre' 열을 기준으로 데이터를 그룹화하고, 'Movie' 열의 개수와 'Rating' 열의 평균을 계산하여 결과를 출력합니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글

pandas series.str  (0) 2023.08.11
pandas 선택함수  (0) 2023.08.11
DataFrame 통계 함수  (0) 2023.08.11
DataFrame Function 1  (0) 2023.08.11
pandas DataFrame 인덱스  (0) 2023.08.10