본문 바로가기

Pandas/응용

판다스 - groupby : 인덱스로 그룹화하기 (멀티인덱스, level)

반응형

https://steadiness-193.tistory.com/76

 

판다스 - groupby : 색인 단계로 그룹핑하기(계층적 색인)

계층적 색인에서는 축 색인의 단계 중 하나를 이용해 집계할 수 있다. 데이터 만들기 컬럼이 멀티인덱스이므로 컬럼으로 그룹핑할땐 level을 명시해줘야 한다. city를 기준으로 그룹핑 tenor를 기준

steadiness-193.tistory.com

위 포스팅의 조금 더 살을 붙이는 내용이다.

 

 

 

데이터 불러오기

 

캐글의 타이타닉 train 데이터

 

 

우선 Pclass와 성별 컬럼으로 인덱스를 멀티인덱스로 바꿔보자

 

 

 

 

참고로 Pclass와 성별 컬럼의 고유값들이다.

 

 

 

 

 

인덱스 변경

 

 

멀티인덱스로 잘 바뀌었다.

 

안쪽으로 올수록 레벨이 높아진다.

 

Pclass의 레벨은 0, 성별의 레벨은 1이다.

 

 

 

 

 

 

1. Pclass 인덱스로만 그룹핑하기

train.groupby(['Pclass'], level=0)

train.groupby(['Pclass'])

train.groupby(level='Pclass')

 

위 세가지 방법 모두 가능하다.

 

 

 

 

모두 이상 없이 잘 그룹화되었다.

 

단, 멀티인덱스 중 하나인 성별은 보이지 않는다.

 

 

 

 

 

 

2. 성별 인덱스로만 그룹핑하기

train.groupby(['Sex'], level=1)

train.groupby(['Sex'])

train.groupby(level='Sex')

이 또한 모두 가능하다.

 

 

 

 

 

 

이상 없이 잘 그룹화되었다.

 

단, 멀티인덱스 중 Pclass는 보이지 않는다.

 

 

 

 

 

 

3. 멀티인덱스로 그룹화하기

train.groupby(['Pclass', 'Sex'], level=[0, 1])

train.groupby(['Pclass', 'Sex']) 

train.groupby(level=['Pclass', 'Sex'])

 

위 세가지 모두 가능하다.

 

 

 

 

이렇게 (멀티)인덱스를 그룹핑에 이용할 땐

 

굳이 level을 사용하지 않아도 잘 묶였다.

 

 

명시적으로 입력해야하는 것이 아니라면

 

간결하게 작성해도 무방해보인다.

반응형