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() 등 다른 집계 함수도 동일한 방식으로 활용할 수 있으니 함께 익혀두면 데이터 분석에 큰 도움이 됩니다.