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

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

개요

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

결과 해석

출력 결과를 보면 BMWLexus는 각각 2번씩 나타났기 때문에 가장 앞쪽에 배치되었고, 한 번만 등장한 MercedesMustang은 그 뒤에 위치합니다. 이처럼 groupby(), count(), sort_values()를 조합하면 데이터의 빈도를 손쉽게 집계하고 원하는 순서대로 정렬할 수 있습니다.