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

Python Pandas – MultiIndex의 각 수준을 열로 변환해 DataFrame 만드는 방법

개요

Pandas에서 MultiIndex의 각 수준(level)을 일반 열(column)로 사용하는 DataFrame을 만들려면 to_frame() 메서드를 활용하면 됩니다. 이 메서드는 계층형 인덱스를 하나의 DataFrame으로 손쉽게 변환해 주기 때문에, 인덱스 정보를 데이터로 다루고 싶을 때 매우 유용합니다.

필수 라이브러리 임포트

먼저 필요한 라이브러리를 가져옵니다.

import pandas as pd

MultiIndex란?

MultiIndex는 pandas 객체에서 사용되는 다중 레벨(계층형) 인덱스 객체입니다. 하나의 축에 여러 개의 인덱스 수준을 지정할 수 있어, 복잡한 데이터 구조를 효율적으로 표현할 수 있습니다.

먼저 MultiIndex를 구성할 배열을 생성합니다.

arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

from_arrays() 메서드를 사용하면 위 배열로부터 MultiIndex를 만들 수 있으며, 이때 names 매개변수를 통해 각 인덱스 수준의 이름을 지정할 수 있습니다.

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

to_frame()으로 DataFrame 생성하기

MultiIndex의 각 수준을 열로 갖는 DataFrame을 만들려면 to_frame() 메서드를 호출합니다.

dataFrame = multiIndex.to_frame()

전체 예제 코드

다음은 위 과정을 모두 포함한 완전한 코드입니다.

import pandas as pd

# MultiIndex는 pandas 객체를 위한 다중 레벨(계층형) 인덱스 객체입니다.
# 배열 생성
arrays = [[1, 2, 3, 4], ['John', 'Tim', 'Jacob', 'Chris']]

# names 매개변수로 각 인덱스 수준의 이름을 지정하고
# from_arrays()로 MultiIndex를 생성합니다.
multiIndex = pd.MultiIndex.from_arrays(arrays, names=('ranks', 'student'))

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

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

# to_frame()을 사용해 MultiIndex의 수준을 열로 하는 DataFrame 생성
dataFrame = multiIndex.to_frame()

# DataFrame 출력
print("\nThe DataFrame...\n", dataFrame)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

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

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

The DataFrame...
                    ranks  student
ranks  student
1      John          1     John
2      Tim           2     Tim
3      Jacob         3     Jacob
4      Chris         4     Chris

정리

출력 결과를 보면 원래 인덱스였던 ranksstudent가 DataFrame의 일반 열로 변환된 것을 확인할 수 있습니다. 또한 levels 속성을 통해 각 인덱스 수준에 포함된 고유값들을 확인할 수 있는데, 문자열 수준은 알파벳 순으로 정렬되어 표시됩니다. 이처럼 to_frame() 메서드를 사용하면 계층형 인덱스를 데이터 분석에 바로 활용할 수 있는 형태로 쉽게 변환할 수 있습니다.