개요
Pandas에서 데이터를 오름차순 또는 내림차순으로 정렬하려면 sort_values() 메서드를 사용합니다. 오름차순으로 정렬할 때는 다음과 같이 ascending=True 옵션을 지정하면 됩니다.
ascending=True
1단계: 필요한 라이브러리 임포트하기
먼저 Pandas 라이브러리를 임포트합니다.
import pandas as pd
2단계: DataFrame 생성하기
예제에서 사용할 Car(차량), Reg_Price(등록 가격), Place(지역) 3개의 열을 가진 DataFrame을 생성합니다.
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Lexus'],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 2000],
"Place": ['Pune', 'Delhi', 'Mumbai', 'Hyderabad', 'Bangalore', 'Chandigarh']
}
)
3단계: 요소 빈도를 계산한 뒤 오름차순으로 정렬하기
요소의 빈도(등장 횟수)에 따라 DataFrame을 오름차순으로 정렬하려면 먼저 각 값이 몇 번 나타나는지 세어야 합니다. 이를 위해 groupby()와 count()를 함께 사용해 차량별 등장 횟수를 구하고, sort_values()에 ascending=True를 설정하여 오름차순 정렬을 수행합니다.
dataFrame.groupby(['Car'])['Reg_Price'].count().reset_index(name='Count').sort_values(['Count'], ascending=True)
전체 예제 코드
지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame(
{
"Car": ['BMW', 'Lexus', 'BMW', 'Mustang', 'Mercedes', 'Lexus'],
"Reg_Price": [7000, 1500, 5000, 8000, 9000, 2000],
"Place": ['Pune', 'Delhi', 'Mumbai', 'Hyderabad', 'Bangalore', 'Chandigarh']
}
)
print("DataFrame ...\n", dataFrame)
# 요소 빈도에 따라 오름차순으로 DataFrame 정렬
dataFrame = dataFrame.groupby(['Car'])['Reg_Price'].count().reset_index(name='Count').sort_values(['Count'], ascending=True)
print("\n오름차순으로 정렬된 DataFrame ...\n", dataFrame)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame ...
Car Place Reg_Price
0 BMW Pune 7000
1 Lexus Delhi 1500
2 BMW Mumbai 5000
3 Mustang Hyderabad 8000
4 Mercedes Bangalore 9000
5 Lexus Chandigarh 2000
오름차순으로 정렬된 DataFrame ...
Car Count
2 Mercedes 1
3 Mustang 1
0 BMW 2
1 Lexus 2
코드 동작 원리
실행 결과를 보면 Mercedes와 Mustang은 각각 1번, BMW와 Lexus는 각각 2번 등장했습니다. 따라서 빈도가 낮은 순서부터 높은 순서대로, 즉 오름차순으로 정렬된 것을 확인할 수 있습니다.
여기서 사용된 각 메서드의 역할은 다음과 같습니다.
- groupby('Car') — Car 열을 기준으로 데이터를 그룹화합니다.
- count() — 각 그룹의 Reg_Price 값 개수, 즉 차량별 등장 횟수를 셉니다.
- reset_index(name='Count') — 집계 결과를 새로운 DataFrame으로 변환하면서 개수 열의 이름을 'Count'로 지정합니다.
- sort_values(['Count'], ascending=True) — Count 열을 기준으로 오름차순 정렬합니다.
이처럼 groupby(), count(), sort_values()를 조합하면 별도의 반복문 없이도 요소 빈도 기준의 정렬을 손쉽게 구현할 수 있습니다.