본문 바로가기
2학년 2학기/데이터 사이언스 입문

[pandas] Hierarchical Indexing(계층적 인덱싱)

by print_soo 2024. 10. 15.

Hierarchical Indexing(계층적 인덱싱)은 여러개의 인덱스 또는 열을 가질 수 있는 기능이다.

 

 

이런 식으로 상위 계층에 a, b가 있고 하위 계층에 1, 2가 있는 인덱싱을 말한다. 

이런 계층이 있는 인덱스를 다중 인덱스 (MultiIndex)라고 한다. 

 

 

 

다중 인덱스 (MultiIndex) 생성

1. 생성자 기반 생성

 

 

2. array를 통한 생성

 

 

3. tuple를 통한 생성

 

4. product를 통한 생성

 

이렇게 다중 인덱스 (MultiIndex)를 만들 수 있고 이 값을 데이터 프레임 생성할 때 index 값으로 넣어주면 된다. 

 

 

물론, columns에 값을 넣어도 된다.

 

 

 

여기서 names는 행과 열 각각의 상위 계층, 하위 계층의 이름을 붙여준 것이이다.(사진 참고)

 

 


 

 

인덱싱, 슬라이싱 및 기타

 

여기서는 ,가 중요한 역할을 한다. 

 

일차원 배열

: 일차원 배열에서 data[x, y]는 상위 인덱스 x에서 하위 인덱스를 출력하는 것이다.

 

  

 

 

 

이차원 배열

: 2차원 배열은 data[x, y]는 x는 index이고, y는 columns를 뜻한다. 

 

 

 

 

[컬럼명을 통한 특정 행 출력]

 

x, y가 컬럼명이라면, x 컬럼에서 y컬럼까지를 출력한다.


 

[행과 열 슬라이싱을 통한 특정 행렬 출력]

 

data.iloc[x, y]을 통해서 출력할 수 있는데, x의 슬라이싱은 행, y의 슬라이싱은 열을 제한하고 제한된 행과 열을 출력한다.

 


 

[행과 열 상위 인덱스(컬럼), 하위 인덱스(컬럼)을 통한 특정 행렬 출력]

 

data.loc[x, y]을 통해서 출력할 수 있다.

 

 

x자리에 (a, b)를 한다면 index에서 상위 인덱스 a 중에서 하위 인덱스 b에 해당하는 것들을 출력한다.

 

 


 

y자리에 (c, d)를 한다면 columns에서 상위 컬럼 c 중에서 하위 컬럼 d에 해당하는 것들을 출력한다.

 

 

 

 


 

 

 

[ 명시적 인덱싱으로 슬라이싱을 하는 경우 ]

: 명시적 인덱싱으로 슬라이싱하면 에러 발생할 수 있다.

 

 

MultiIndex의 재배열

이러한 문제는 멀티인덱스의 재배열을 통해서 해결할 수 있다.

 

 

1. sort_index

: sort_index 메소드를 사용해서 인덱스를 정렬해주면 슬라이싱을 해도 에러가 나지 않는다.

 

 

2. 인덱스 재설정(중요)


 

 

 

[mean(), sum(), max()등과 결합해서 사용가능] 

: 해당 부분은 교수님의 예시들이 옛날 버전이라 지금이랑 다른게 많다. 교수님은 1.5.0을 쓰시는 것 같다.