멀티 인덱스

DF를 그룹화 하면 행이 여러 계층으로 생성된다. 이렇게 행 인덱스를 여러 레벨로 구현할 수 있도록 멀티 인덱스(MultiIndex)클래스를 지원한다.

멀티인덱스에 접근하는 3가지 방법이 있다.

loc

loc[ ' 행 ' ] 과 같이 접근하면 특정값을 갖는 행을 선택할 수 있다.

튜플로 접근

튜플형태로 각 인덱스에서 찾는 값을 전달하면 접근할 수 있다.

xs 인덱서

xs인덱서를 사용할 수 있다.

import pandas as pd
import seaborn as sns

titanic = sns.load_dataset('titanic')
df = titanic.loc[:, ['age', 'sex', 'class', 'fare', 'survived']]

grouped = df.groupby(['class', 'sex'])

gdf = grouped.mean()
print(gdf)
print()

# First라는 값을 갖는 행을 선택
print(gdf.loc['First'])
print()

# Tuple로 접근
print(gdf.loc[('First', 'female')])
print()

# xs인덱서 사용
# 'sex'인덱스에서 'male' 값을 갖는 행을 추출한다.
print(gdf.xs('male', level='sex'))
                     age        fare  survived
class  sex
First  female  34.611765  106.125798  0.968085
       male    41.281386   67.226127  0.368852
Second female  28.722973   21.970121  0.921053
       male    30.740707   19.741782  0.157407
Third  female  21.750000   16.118810  0.500000
       male    26.507589   12.661633  0.135447

              age        fare  survived
sex
female  34.611765  106.125798  0.968085
male    41.281386   67.226127  0.368852

age          34.611765
fare        106.125798
survived      0.968085
Name: (First, female), dtype: float64

              age       fare  survived
class
First   41.281386  67.226127  0.368852
Second  30.740707  19.741782  0.157407
Third   26.507589  12.661633  0.135447