[파이썬] pandas 피벗 테이블의 커스텀 집계

피벗 테이블(pivot table)은 데이터를 요약하고 분석하기 위한 강력한 기능을 제공하는 pandas 라이브러리의 핵심 기능 중 하나입니다. 일반적으로 피벗 테이블은 특정 열을 행 인덱스로, 다른 열을 열 인덱스로 사용하여 데이터를 재구조화하는 것을 의미합니다.

하지만 때로는 기본적인 집계 함수(예: 합계, 평균, 개수 등)만으로는 데이터를 분석하기에 충분하지 않을 수 있습니다. 이런 경우에는 피벗 테이블에 커스텀 집계 함수를 적용하여 원하는 방식으로 데이터를 요약하고 분석할 수 있습니다.

커스텀 집계 함수 정의하기

커스텀 집계 함수는 pandas의 aggfunc 매개변수를 사용하여 피벗 테이블에 적용됩니다. 이 함수는 특정 그룹에 대한 값을 계산하고 반환하는 역할을 합니다.

import pandas as pd

def custom_agg_func(data):
    # 집계 로직을 구현하는 코드
    return 결과값

위의 예제 코드에서는 custom_agg_func라는 이름의 커스텀 집계 함수를 정의하였습니다. 이 함수는 데이터를 입력받아 특정 그룹에 대한 값을 계산하고 그 결과를 반환합니다. 집계 로직은 데이터에 따라 달라지며, 원하는 대로 사용자가 구현할 수 있습니다.

커스텀 집계 함수를 피벗 테이블에 적용하기

피벗 테이블에 커스텀 집계 함수를 적용하기 위해서는 aggfunc 매개변수에 커스텀 집계 함수를 전달해야 합니다. 예를 들어, 다음 데이터프레임을 기준으로 피벗 테이블을 생성해보겠습니다.

import pandas as pd

data = {
    'Name': ['John', 'John', 'Mary', 'Mary', 'Jake', 'Jake'],
    'Subject': ['Math', 'Science', 'Math', 'Science', 'Math', 'Science'],
    'Score': [80, 90, 70, 85, 75, 95]
}

df = pd.DataFrame(data)

위의 예제 데이터프레임은 학생들의 이름, 과목, 성적을 담고 있습니다. 이제 Name을 행 인덱스로, Subject를 열 인덱스로 사용하여 성적을 요약하는 피벗 테이블을 생성하고 커스텀 집계 함수를 적용해보겠습니다.

pivot_table = df.pivot_table(index='Name', columns='Subject', values='Score', aggfunc=custom_agg_func)

위의 코드에서 aggfunc 매개변수에 custom_agg_func 함수를 전달하여 커스텀 집계 함수를 적용하였습니다. 이를 실행하면 Name을 행 인덱스로, Subject를 열 인덱스로 사용하는 피벗 테이블이 생성되며, 커스텀 집계 함수를 통해 도출된 원하는 방식으로 데이터가 요약됩니다.

결론

pandas의 피벗 테이블은 데이터를 재구조화하여 요약하고 분석하기에 편리한 기능을 제공합니다. 때로는 기본적인 집계 함수만으로는 원하는 분석 결과를 얻기 어려울 때가 있는데, 이때는 피벗 테이블에 커스텀 집계 함수를 적용하여 원하는 방식으로 데이터를 요약할 수 있습니다. 커스텀 집계 함수를 정의하고 적용하는 방법을 익히면 더욱 다양한 데이터 분석을 수행할 수 있게 됩니다.