Pandas 멀티 인덱스 정보

3339 단어 pandas파이썬

소개



Hanari Python Advent Calendar의 11 일째 기사입니다.
나 자신 Pandas는 정말로 초보자이기 때문에, 이전부터 신경이 쓰였던 멀티 인덱스에 대해서 간단합니다만 정리했습니다.

※본 기사에서는 원칙 하기 코드는 생략합니다만, 기술되고 있는 전제로 진행합니다.
import pandas as pd

원래 멀티 인덱스란?



행 라벨, 열 라벨을 계층적으로 가질 수 있는 구조입니다.
문자 설명이 다소 어렵기 때문에 실제로 예를 살펴 보겠습니다.



위 그림의 경우 열 레이블은 두 개의 레이어입니다. 첫 번째 열에는 name과 typeA라는 레이블이 부여되고 두 번째 열에는 time과 typeA라는 레이블이 부여됩니다.

다중 인덱스 처리 (열 레이블이 다중 인 경우)



그렇다면 실제로 데이터를 검색하는 경우를 살펴 보겠습니다.



위의 예에서는 name 및 time 전용 열을 추출합니다.
덧붙여서, 보통의 인덱스의 경우도 같은 방법으로 열을 빼낼 수가 있습니다. (아래 그림 참조)



즉, 외부의 라벨에 대해서는, 통상의 열 라벨과 같은 방법으로 참조할 수 있다, 라고 하는 것입니다.

그럼, 안쪽의 라벨로 좁히기를 실시해 봅시다.
그 때는 IndexSlice를 사용합니다.



위 그림에서는 typeA로 좁힌 결과입니다. typeA에는 name과 time이 포함되어 있으므로 typeA로 좁히기만 하면 2열의 데이터를 얻을 수 있습니다.
멀티 인덱스를 사용하면 그룹화할 수 있으므로 하나의 레이블로 여러 열을 좁힐 수 있습니다.

덧붙여서, 만약 name과 typeA의 양쪽 모두를 선택하는 경우는 이하가 됩니다(실제는 이런 일은 하지 않습니다만)



IndexSlice 설명은 외부 레이블에서 순서대로 설명합니다.

다중 인덱스 처리 (행 레이블이 다중 인 경우)



다음으로, 행 라벨을 멀티로 해 봅시다.



꽤 까다롭지만, 우선 name과 time, message를 열 라벨로 설정하고 있습니다.
다음으로, test = df.set_index(['name','time']) 의 부분에서 name 와 time 를 인덱스로서 세트 하고 있으므로, name 와 time 는 열 라벨이 아닌 행 라벨로서의 멀티 인덱스가 됩니다. (아래 그림 참조)



그럼, device1의 데이터만을 추출해 봅시다.



덧붙여서, device1과 2020으로 좁히는 경우는 이하가 됩니다.
loc의 내용을 배열이 아니라 튜플로 지정하는 것으로 좁히기가 가능합니다.



마지막으로



멀티인덱스 이용함으로써, 열이나 행을 그룹화할 수 있어 보다 알기 쉬운 데이터 처리를 할 수 있게 됩니다.
처음 보았을 때 나도 전혀 알지 못했지만,이 기사가 조금이라도 이해의 도움이되면 다행입니다.
그럼(^▽^)

좋은 웹페이지 즐겨찾기