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

Python Pandas – 요소 빈도를 기준으로 DataFrame을 오름차순으로 정렬하는 방법

개요

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()를 조합하면 별도의 반복문 없이도 요소 빈도 기준의 정렬을 손쉽게 구현할 수 있습니다.