Índice Multinível em Pandas: Entenda o que É e Como Usar

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Quando trabalhamos com dados, seja em uma planilha de Excel ou em um script de Python, muitas vezes precisamos organizar e acessar informações de maneira eficiente. No mundo do Python, a biblioteca Pandas é uma ferramenta poderosa para manipulação de dados, e um dos seus recursos mais úteis é o conceito de índices multiníveis, também conhecidos como MultiIndex. Neste tutorial, vamos explorar o que é um índice multinível em Pandas, e como ele pode ser aplicado em seus projetos de análise de dados.

O que é um Índice Multinível em Pandas?

Imagine uma planilha de Excel onde você tem várias categorias e subcategorias de dados. Por exemplo, você pode ter vendas de diferentes produtos, categorizadas por ano e por mês. No Pandas, um índice multinível permite que você crie uma estrutura de dados semelhante, onde cada nível do índice representaria o ano, mês, ou qualquer outra subdivisão. A imagem abaixo exemplifica isso:

Exemplo de um índice multinível em Pandas a partir de uma planilha de Excel.

Por Que Usar um Índice Multinível em Pandas?

Índices multiníveis são extremamente úteis quando você está lidando com dados hierárquicos. Eles permitem que você:

  • Organize dados de forma mais intuitiva.
  • Acesse rapidamente subconjuntos de dados.
  • Realize cálculos e análises complexas de forma mais simples.

Exemplo Prático de Índices Multiníveis

Vamos ver um exemplo de como criar e trabalhar com índices multiníveis no Pandas. Para isso, vamos imaginar que temos dados de vendas de uma loja que queremos organizar por ano e mês.

import pandas as pd
import numpy as np

# Criando listas para representar anos e meses
anos = ['2020', '2021']
meses = ['Janeiro', 'Fevereiro']

# Criando um MultiIndex a partir das listas
indice_multinivel = pd.MultiIndex.from_product([anos, meses], names=['Ano', 'Mês'])

# Criando um DataFrame com o MultiIndex
vendas = pd.DataFrame([150, 120, 100, 110], columns=['Vendas'], index=indice_multinivel)

# Exibindo o DataFrame
print(vendas)

# output:
#                 Vendas
# Ano  Mês              
# 2020 Janeiro       150
#      Fevereiro     120
# 2021 Janeiro       100
#      Fevereiro     110

Neste exemplo, criamos um DataFrame que representa as vendas de dois produtos ao longo de dois meses em dois anos diferentes.

Note que criamos o índice multinível em Pandas com o método .from_product(), que basicamente cria todas as combinações possíveis entre duas ou mais listas (neste caso, as listas anos e meses). Cada combinação de valores se torna uma linha do índice multinível.

Selecionando Dados com Índices Multiníveis

Agora que temos nosso DataFrame com índices multiníveis, como podemos acessar os dados de um mês específico? É simples:

# Acessando os dados de Janeiro de 2020
print(vendas.loc['2020', 'Janeiro'])

# output:
# Vendas    150
# Name: (2020, Janeiro), dtype: int64

Note que o primeiro nível do índice multinível (o ano) deve vir por primeiro, o segundo nível (mês) por segundo, e assim por diante para todos os níveis.

Por outro lado, se quisermos as vendas de 2020 de todos os meses, podemos omitir o segundo nível da seleção:

# Acessando os dados de todos os meses de 2020
print(vendas.loc['2020'])

# output:
#            Vendas
# Mês              
# Janeiro       150
# Fevereiro     120

Conclusão

Criar um índice multinível em Pandas é uma forma de facilitar a manipulação de dados hierárquicos. Eles são como ter várias camadas de categorias em uma planilha de Excel, mas com a capacidade de realizar operações de dados mais complexas e eficientes. Com a prática, você verá como eles podem tornar suas análises de dados muito mais intuitivas e poderosas.

Lembre-se, a melhor maneira de aprender é praticando. Então, pegue seus próprios conjuntos de dados e comece a experimentar com índices multiníveis hoje mesmo!

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: