Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Pandas DataFrame에서 groupby()로 열 그룹화하는 방법

Pandas DataFrame에서 열을 그룹화하려면 groupby() 함수를 사용합니다. groupby()는 특정 열(또는 여러 열)의 고유한 값들을 기준으로 데이터를 묶어주는 강력한 도구로, 그룹별 통계 분석에 널리 활용됩니다.

1. 샘플 데이터프레임 생성

먼저 예제에 사용할 Pandas 데이터프레임을 만들어 보겠습니다. 자동차 이름(Car)과 등록 가격(Reg_Price) 두 개의 열로 구성된 간단한 데이터입니다.

import pandas as pd

dataFrame = pd.DataFrame(
    {
        "Car": ["Audi", "Lexus", "Audi", "Mercedes", "Audi", "Lexus", "Mercedes", "Lexus", "Mercedes"],
        "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
    }
)

2. 특정 열을 기준으로 그룹화

이제 Car 열을 기준으로 데이터를 그룹화해 보겠습니다. groupby()에 기준이 될 열 이름을 인자로 전달하기만 하면 됩니다.

res = dataFrame.groupby("Car")

그룹화가 완료되면 다양한 집계 함수를 적용할 수 있습니다. 여기서는 그룹별 등록 가격(Reg_Price)의 평균값을 구하기 위해 mean() 함수를 사용합니다.

res.mean()

위 코드는 Car 열의 값(Audi, Lexus, Mercedes)별로 등록 가격의 평균을 계산합니다.

3. 전체 예제 코드

지금까지의 과정을 하나의 완성된 코드로 정리하면 다음과 같습니다.

import pandas as pd

# Reg_Price 열을 포함한 데이터프레임 생성
dataFrame = pd.DataFrame(
    {
        "Car": ["Audi", "Lexus", "Audi", "Mercedes", "Audi", "Lexus", "Mercedes", "Lexus", "Mercedes"],
        "Reg_Price": [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]
    }
)

print("DataFrame...\n", dataFrame)

# Car 열을 기준으로 그룹화
res = dataFrame.groupby("Car")

# 차량 이름별 등록 가격의 평균 출력
print("\n차량 이름별 등록 가격 평균...\n", res.mean())

4. 실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DataFrame...
       Car   Reg_Price
0     Audi        1000
1    Lexus        1400
2     Audi        1100
3 Mercedes         900
4     Audi        1700
5    Lexus        1800
6 Mercedes        1300
7    Lexus        1150
8 Mercedes        1350

차량 이름별 등록 가격 평균...
          Reg_Price
Car
Audi      1266.666667
Lexus     1450.000000
Mercedes  1183.333333

정리

결과에서 확인할 수 있듯이, Audi의 평균 등록 가격은 약 1,266.67, Lexus는 1,450, Mercedes는 약 1,183.33으로 계산되었습니다. 이처럼 groupby()와 mean() 같은 집계 함수를 조합하면 복잡한 반복문 없이도 그룹별 통계를 손쉽게 구할 수 있습니다. sum(), count(), max(), min() 등 다른 집계 함수도 동일한 방식으로 활용할 수 있으니 함께 익혀두면 데이터 분석에 큰 도움이 됩니다.