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