Pandas 데이터프레임을 그룹화하려면 groupby() 메서드를 사용합니다. 그룹화된 결과를 오름차순 또는 내림차순으로 정렬할 때는 sort_values()를 활용하고, 각 그룹의 크기(개수)를 구할 때는 size() 메서드를 사용합니다.
오름차순 정렬을 원한다면 sort_values()에 다음 옵션을 지정합니다.
ascending=True
반대로 내림차순 정렬을 원한다면 아래와 같이 지정합니다.
ascending=False
1. 데이터프레임 생성
먼저 예제로 사용할 Pandas 데이터프레임을 만들어 보겠습니다.
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
"Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
}
)위 코드는 자동차 이름(Car)과 등록 가격(Reg_Price) 두 개의 열을 가진 데이터프레임을 생성합니다.
2. 그룹화 후 내림차순 정렬
Reg_Price 열을 기준으로 그룹화하고, 그룹 크기를 내림차순으로 정렬하려면 다음과 같이 작성합니다.
dataFrame.groupby('Reg_Price').size().sort_values(ascending=False)3. 그룹화 후 오름차순 정렬
같은 방식으로 오름차순으로 정렬하려면 ascending 값을 True로 변경합니다.
dataFrame.groupby('Reg_Price').size().sort_values(ascending=True)전체 예제 코드
지금까지의 과정을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# Reg_Price 열이 포함된 데이터프레임 생성
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'Audi', 'Mercedes', 'Jaguar', 'Bentley'],
"Reg_Price": [1000, 1400, 1000, 900, 1700, 900]
}
)
print("DataFrame...\n", dataFrame)
# Reg_Price 열을 기준으로 그룹화한 뒤 내림차순 정렬
print("\n내림차순 정렬 결과...\n")
print(dataFrame.groupby('Reg_Price').size().sort_values(ascending=False))
# Reg_Price 열을 기준으로 그룹화한 뒤 오름차순 정렬
print("\n오름차순 정렬 결과...\n")
print(dataFrame.groupby('Reg_Price').size().sort_values(ascending=True))실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DataFrame...
Car Reg_Price
0 BMW 1000
1 Lexus 1400
2 Audi 1000
3 Mercedes 900
4 Jaguar 1700
5 Bentley 900
내림차순 정렬 결과...
Reg_Price
1000 2
900 2
1700 1
1400 1
dtype: int64
오름차순 정렬 결과...
Reg_Price
1400 1
1700 1
900 2
1000 2
dtype: int64결과 해석
실행 결과를 보면 등록 가격이 1000인 그룹(BMW, Audi)과 900인 그룹(Mercedes, Bentley)에는 각각 2개의 행이 속해 있고, 1400(Lexus)과 1700(Jaguar) 그룹에는 1개씩만 속해 있습니다. 내림차순 정렬 시 개수가 많은 그룹이 먼저 표시되며, 개수가 같은 그룹 사이에는 인덱스 값(여기서는 Reg_Price)을 기준으로 정렬됩니다. 이처럼 groupby(), size(), sort_values() 세 가지를 조합하면 그룹별 데이터 분포를 손쉽게 파악할 수 있습니다.