개요
Pandas에서 데이터를 오름차순이나 내림차순으로 정렬하려면 sort_values() 메서드를 사용합니다. 내림차순으로 정렬하고 싶다면 sort_values() 메서드에 ascending=False 옵션을 지정하면 됩니다.
ascending=False
필수 라이브러리 임포트하기
먼저 Pandas 라이브러리를 임포트합니다.
import pandas as pd
DataFrame 생성하기
예제로 사용할 3개의 컬럼(Car, Reg_Price, Place)을 가진 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']
}
)요소 빈도 기준으로 내림차순 정렬하기
요소의 등장 횟수(빈도)를 기준으로 DataFrame을 내림차순 정렬하려면 먼저 각 값이 몇 번 나타나는지 세어야 합니다. 이를 위해 groupby()와 count()를 함께 사용하고, 그 결과를 sort_values()에 ascending=False 옵션을 적용해 정렬합니다.
dataFrame.groupby(['Car'])['Reg_Price'].count().reset_index(name='Count').sort_values(['Count'], ascending=False)
여기서 각 단계가 하는 역할은 다음과 같습니다.
- groupby(['Car']): 차량 이름별로 데이터를 그룹화합니다.
- count(): 각 그룹의 등장 횟수를 셉니다.
- reset_index(name='Count'): 결과를 새로운 DataFrame으로 변환하고 빈도 컬럼의 이름을 'Count'로 지정합니다.
- sort_values(['Count'], ascending=False): 빈도를 기준으로 내림차순 정렬합니다.
전체 예제 코드
지금까지 설명한 내용을 하나의 코드로 작성하면 다음과 같습니다.
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.groupby(['Car'])['Reg_Price'].count().reset_index(name='Count').sort_values(['Count'], ascending=False)
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
0 BMW 2
1 Lexus 2
2 Mercedes 1
3 Mustang 1결과 해석
출력 결과를 보면 BMW와 Lexus는 각각 2번씩 나타났기 때문에 가장 앞쪽에 배치되었고, 한 번만 등장한 Mercedes와 Mustang은 그 뒤에 위치합니다. 이처럼 groupby(), count(), sort_values()를 조합하면 데이터의 빈도를 손쉽게 집계하고 원하는 순서대로 정렬할 수 있습니다.