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

Python Pandas - 배열(Array)로 다중 인덱스(MultiIndex) 생성하는 방법

Pandas에서는 MultiIndex.from_arrays() 메서드를 사용하여 여러 개의 배열(리스트)을 조합해 다중 인덱스를 손쉽게 만들 수 있습니다. 다중 인덱스는 하나의 인덱스 축에 여러 계층의 레벨을 두어 복잡한 데이터를 체계적으로 관리할 때 유용합니다.

이번 글에서는 자동차 이름 배열과 등록 가격 배열 두 개를 결합하여 다중 인덱스를 생성하는 과정을 단계별로 살펴보겠습니다.

1단계: 자동차 이름 배열 생성

먼저 예제에 사용할 자동차 이름으로 구성된 배열을 만듭니다.

car = ['Audi', 'Lexus', 'Tesla', 'Mercedes', 'BMW', 'Toyota', 'Nissan', 'Bentley', 'Mustang']

2단계: 등록 가격 배열 생성

다음으로 각 자동차의 등록 가격(Registration Price)을 담은 또 다른 배열을 준비합니다.

reg_price = [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]

3단계: MultiIndex.from_arrays()로 다중 인덱스 생성

이제 pd.MultiIndex.from_arrays() 메서드에 두 배열을 리스트 형태로 전달합니다. 이때 names 매개변수를 사용하면 각 인덱스 레벨에 의미 있는 이름을 지정할 수 있어, 이후 데이터 조회와 분석이 훨씬 편리해집니다.

예제 코드

import pandas as pd

# 자동차 이름 배열
car = ['Audi', 'Lexus', 'Tesla', 'Mercedes', 'BMW', 'Toyota', 'Nissan', 'Bentley', 'Mustang']

# 등록 가격 배열
reg_price = [1000, 1400, 1100, 900, 1700, 1800, 1300, 1150, 1350]

# 두 배열을 결합하여 다중 인덱스 생성
print(pd.MultiIndex.from_arrays([car, reg_price], names=('car', 'reg_price')))

실행 결과

위 코드를 실행하면 아래와 같이 두 레벨(car, reg_price)로 구성된 다중 인덱스가 출력됩니다.

MultiIndex(levels=[['Audi', 'BMW', 'Bentley', 'Lexus', 'Mercedes', 'Mustang', 'Nissan', 'Tesla', 'Toyota'],
                   [900, 1000, 1100, 1150, 1300, 1350, 1400, 1700, 1800]],
           codes=[[0, 3, 7, 4, 1, 8, 6, 2, 5], [1, 6, 2, 0, 7, 8, 4, 3, 5]],
           names=['car', 'reg_price'])

결과 해석

출력 결과를 보면 다음과 같은 구조를 확인할 수 있습니다.

  • levels: 각 레벨에 포함된 고유 값들의 목록입니다. 첫 번째 레벨에는 자동차 이름이, 두 번째 레벨에는 등록 가격이 정렬되어 저장됩니다.
  • codes: 실제 데이터 순서대로 각 요소가 어떤 level 값을 참조하는지 나타내는 정수 인덱스입니다.
  • names: names=() 인자로 지정한 각 레벨의 이름('car', 'reg_price')이 표시됩니다.

참고로 최신 버전의 Pandas에서는 labels 대신 codes라는 명칭이 사용되며, 결과 해석 방식은 동일합니다. 이렇게 생성된 다중 인덱스는 DataFrame의 인덱스로 바로 활용할 수 있어, 계층적 데이터 분석에 큰 도움이 됩니다.