22. 데이터프레임의 응용 - 멀티 인덱스

김동웅·2021년 10월 6일
0

Pandas with python

목록 보기
22/23

groupby() 메소드에 여러 열을 리스트 형태로 전달하면 각 열들이 다중으로 행 인덱스를 구성하는 것을 보았다.

이처럼 판다스는 행 인덱스를 여러 레벨로 구현할 수 있도록 멀티 인덱스 클래스를 제공한다.

ex)

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('\n')
print(type(gdf))

print(gdf.loc['First'])
                     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
       <class 'pandas.core.frame.DataFrame'>
  • 데이터프레임 gdf의 멀티인덱스에서 두 개의 인덱스를 사용하는 방법
    : loc 인덱서를 사용하고 인자는 투플 형태로 작성한다.
print(gdf.loc[ ('First','female') ])
age          34.611765
fare        106.125798
survived      0.968085
  • 이번에는 loc 인덱서 대신 xs 인덱서를 사용한다. 'sex' 인덱스에서 'male'값을 갖는 행을 추출한다. 남성 승객에 한정하여 객실 등급별로 만들어서 분석할 수 있다.
print(gdf.xs('male',level='sex'))
              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

0개의 댓글