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

Pandas MultiIndex 특정 레벨 내림차순 정렬 방법 완벽 가이드

Pandas에서 MultiIndex(다중 인덱스)를 생성하려면 from_arrays() 메서드를 사용합니다. 그리고 특정 레벨을 기준으로 MultiIndex를 정렬하려면 sortlevel() 메서드를 활용하면 됩니다. 이때 정렬할 레벨을 인수로 지정하며, 내림차순으로 정렬하고 싶다면 ascending 매개변수를 False로 설정하면 됩니다.

1. 필요한 라이브러리 임포트

먼저 Pandas 라이브러리를 임포트합니다.

import pandas as pd

2. MultiIndex란?

MultiIndex는 Pandas 객체를 위한 다층(multi-level), 즉 계층적(hierarchical) 인덱스 객체입니다. 배열을 생성해 보겠습니다.

arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

from_arrays()로 MultiIndex 생성하기

names 매개변수는 각 인덱스 레벨의 이름을 설정합니다. 그리고 from_arrays() 메서드를 사용하여 MultiIndex를 생성합니다.

multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

3. 특정 레벨 내림차순 정렬하기

MultiIndex를 정렬할 때는 정렬할 특정 레벨을 매개변수로 지정합니다. 여기서는 레벨 1을 기준으로 정렬하며, ascending=False 옵션을 사용해 내림차순으로 정렬합니다.

print("\nSort MultiIndex at the requested level in descending order...\n", multiIndex.sortlevel(1, ascending=False))

전체 예제 코드

아래는 위 과정을 모두 포함한 전체 코드입니다.

import pandas as pd

# MultiIndex는 pandas 객체를 위한 다층(계층적) 인덱스 객체입니다
# 배열 생성
arrays = [[2, 4, 3, 1], ['Peter', 'Chris', 'Andy', 'Jacob']]

# names 매개변수는 각 인덱스 레벨의 이름을 설정합니다
# from_arrays()를 사용하여 MultiIndex 생성
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

# MultiIndex 출력
print("The Multi-index...\n", multiIndex)

# MultiIndex의 레벨 확인
print("\nThe levels in Multi-index...\n", multiIndex.levels)

# MultiIndex 정렬
# 정렬할 특정 레벨을 매개변수로 지정 (여기서는 레벨 1)
# ascending=False로 내림차순 정렬
print("\nSort MultiIndex at the requested level in descending order...\n", multiIndex.sortlevel(1, ascending=False))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

The Multi-index...
MultiIndex([(2, 'Peter'),
            (4, 'Chris'),
            (3, 'Andy'),
            (1, 'Jacob')],
            names=['ranks', 'student'])

The levels in Multi-index...
    [[1, 2, 3, 4], ['Andy', 'Chris', 'Jacob', 'Peter']]

Sort MultiIndex at the requested level in descending order...
(MultiIndex([(2, 'Peter'),
             (1, 'Jacob'),
             (4, 'Chris'),
             (3, 'Andy')],
             names=['ranks', 'student']), array([0, 3, 1, 2], dtype=int64))

핵심 포인트 정리

  • from_arrays(): 배열 리스트를 받아 MultiIndex 객체를 생성하는 메서드입니다.
  • names 매개변수: 각 인덱스 레벨에 의미 있는 이름을 부여하여 데이터를 더 직관적으로 다룰 수 있습니다.
  • sortlevel(level, ascending): 지정한 레벨을 기준으로 MultiIndex를 정렬하며, ascending=False를 설정하면 내림차순 정렬이 됩니다.
  • 반환값: sortlevel()은 정렬된 MultiIndex와 해당 위치 인덱스 배열(array)을 튜플 형태로 함께 반환합니다.