API · Pandas

Pandas DataFrame DataFrame.aggregate() 함수

Pandas DataFrame aggregate() 함수는 DataFrame의 열 또는 행을 집계합니다.

이 페이지의 내용

pandas.DataFrame.aggregate()는 DataFrame에 하나 이상의 집계 함수를 적용합니다. sum, min, max 또는 지원되는 다른 함수를 선택한 다음 axis로 열이나 행을 지정할 수 있습니다. 결과는 입력과 요청한 함수에 따라 스칼라, Series 또는 DataFrame일 수 있습니다. 이미 Series로 저장된 단일 열에는 이에 해당하는 인터페이스인 Series.agg()를 사용할 수 있습니다. 이 가이드에서는 DataFrame의 여러 열이나 선택한 필드를 집계하는 방법을 다룹니다.

pandas.DataFrame.aggregate()의 구문

메서드는 DataFrame.aggregate(func, axis=0, *args, **kwargs) 형식으로 호출합니다. 짧은 이름인 DataFrame.agg()도 같은 메서드를 가리킵니다.

매개변수

매개변수 의미
func 호출 가능한 객체, 함수 이름, 호출 가능한 객체나 함수 이름의 목록, 또는 열 이름과 함수를 연결하는 딕셔너리입니다.
axis 기본값은 0 또는 'index'이며, 각 열을 따라 함수를 적용합니다. 각 행을 따라 적용하려면 1 또는 'columns'를 사용합니다.
*args 집계 함수에 전달할 위치 인수입니다.
**kwargs 집계 함수에 전달할 키워드 인수입니다.

반환값

반환 형식은 객체, 축, 집계 요청에 따라 달라집니다. Series에 집계를 하나 적용하면 일반적으로 스칼라가 반환됩니다. DataFrame에 집계를 하나 적용할 때 axis=0이면 열마다 결과 하나씩 담긴 Series가 반환되고, axis=1이면 행마다 결과 하나씩 담긴 Series가 반환됩니다. DataFrame에 여러 집계를 적용하면 DataFrame이 반환됩니다. axis=0에서는 함수마다 행 하나, 원래 열마다 열 하나가 생기며, axis=1에서는 원래 행마다 행 하나, 함수마다 열 하나가 생깁니다. 딕셔너리를 사용하면 지정한 열만 대상으로 제한할 수 있습니다. 집계를 호출할 때마다 행이나 열의 수가 반드시 줄어드는 것은 아닙니다.

예제: 하나의 함수로 DataFrame 집계하기

DataFrame.agg() 별칭은 기본적으로 각 열을 따라 sum을 적용합니다. 이 예제에는 숫자 열과 텍스트 열이 있습니다. 숫자는 더해지고 문자열은 행 순서대로 연결됩니다.

다음 예제를 실행합니다.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)
print(dataframe.agg("sum"))
Attendance                            413
Name              OliviaJohnLauraBenKevin
Obtained Marks                        356
dtype: object

함수 하나를 적용하면 Series가 만들어지며, 각 인덱스 레이블은 열 하나에 대응합니다. 텍스트 열의 결과는 숫자의 합계가 아니라 연결된 문자열입니다.

예제: 여러 함수로 DataFrame 집계하기

함수 이름 목록을 전달하면 모든 열에 각 집계를 계산할 수 있습니다. 여기서 min은 각 숫자 열에서 가장 작은 숫자를 반환하고, Name에서는 사전식 순서로 가장 앞서는 문자열을 반환합니다. 문자열 길이가 가장 짧은 값을 고르는 것은 아닙니다.

다음 예제를 실행합니다.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)
print(dataframe.agg(["sum", "min"]))
     Attendance                     Name  Obtained Marks
sum         413  OliviaJohnLauraBenKevin             356
min          60                      Ben              45

결과는 DataFrame입니다. 함수 이름이 행 레이블이 되고 원래 열 이름이 열 레이블이 됩니다. 예제 출력에 표시된 열 레이블은 번역되지 않고 영어 그대로 유지됩니다.

예제: 지정한 열 집계하기

딕셔너리를 전달하면 이름을 지정한 열에만 집계를 적용할 수 있습니다. 함수 하나를 지정하면 해당 열의 값이 담긴 Series가 반환됩니다.

다음 예제를 실행합니다.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)
print(dataframe.agg({"Obtained Marks": "sum"}))
Obtained Marks    356
dtype: int64

같은 열에서 여러 결과를 얻으려면 딕셔너리 값으로 목록을 사용합니다. 이 경우 함수 이름을 인덱스로 갖는 DataFrame이 반환됩니다.

다음 예제를 실행합니다.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": [60, 100, 80, 78, 95],
        "Name": ["Olivia", "John", "Laura", "Ben", "Kevin"],
        "Obtained Marks": [90, 75, 82, 64, 45],
    }
)
print(dataframe.agg({"Obtained Marks": ["sum", "max"]}))
     Obtained Marks
sum             356
max              90