Skip to content
Tutoriais
Pandas
Pandas Unstack: Clearly Explained

Pandas Unstack: Claramente Explicado

O Pandas é uma poderosa biblioteca de manipulação de dados em Python que fornece estruturas de dados flexíveis e eficientes. Uma das características mais úteis do Pandas é a capacidade de remodelar dados de várias formas para atender às suas necessidades de análise. Este artigo terá foco na função unstack(), um método que é frequentemente utilizado, mas nem sempre totalmente compreendido.

A função unstack() no Pandas é usada para remodelar um data frame. É um método que "pivota" um DataFrame de um formato longo (ou empilhado) para um formato amplo. Essencialmente, move os dados das linhas para as colunas, fornecendo uma nova visualização de seus dados.

Por exemplo, considere um DataFrame com índices de vários níveis. A função unstack() pode mover os dados de um nível interno do índice de linha para os cabeçalhos das colunas, criando efetivamente uma tabela dinâmica. Isso pode ser especialmente útil ao lidar com índices hierárquicos, pois permite reorganizar seus dados de uma maneira que pode ser mais propícia a certos tipos de análise.

O que o unstack() faz no Pandas?

A função unstack() no Pandas é usada para remodelar um data frame. É um método que "pivota" um DataFrame de um formato longo (ou empilhado) para um formato amplo. Essencialmente, move os dados das linhas para as colunas, fornecendo uma nova visualização de seus dados.

Por exemplo, considere um DataFrame com índices de vários níveis. A função unstack() pode mover os dados de um nível interno do índice de linha para os cabeçalhos das colunas, criando efetivamente uma tabela dinâmica. Isso pode ser especialmente útil ao lidar com índices hierárquicos, pois permite reorganizar seus dados de uma maneira que pode ser mais propícia a certos tipos de análise.

Como desempilhar dados no Pandas?

Desempilhar dados no Pandas é simples uma vez que você entenda o conceito. A função unstack() é chamada em um objeto DataFrame e aceita um argumento opcional: o nível a ser "desempilhado" ou pivô.

Se nenhum nível for especificado, a função unstack() desempilhará o último nível do índice do DataFrame. Se você deseja desempilhar um nível diferente, pode especificá-lo pelo número do índice ou pelo nome.

Aqui está um exemplo básico:

import pandas as pd
 
## Criar um DataFrame com índices múltiplos
index = pd.MultiIndex.from_tuples([(i, j) for i in ['A', 'B', 'C'] for j in ['x', 'y', 'z']])
df = pd.DataFrame({'Dados': range(9)}, index=index)
 
## Desempilhar o DataFrame
df_desempilhado = df.unstack()
 
print(df_desempilhado)

Neste exemplo, a função unstack() move os dados do último nível do índice ('x', 'y', 'z') para os cabeçalhos das colunas, criando efetivamente uma tabela dinâmica.

Qual é o nível de desempilhamento?

O nível em unstack() refere-se ao(s) nível(is) do índice que você deseja desempilhar ou pivotar. Em um DataFrame com um índice de vários níveis, os níveis são numerados do nível externo (0) ao nível interno.

Quando você chama unstack(), pode especificar o nível que deseja desempilhar. Se nenhum nível for especificado, unstack() desempilhará o último (ou nível mais interno) do índice.

Por exemplo, em um DataFrame com um índice de vários níveis ['A', 'B', 'C'] e ['x', 'y', 'z'], o nível de 'A', 'B', 'C' é 0 (o nível mais externo) e o nível de 'x', 'y', 'z' é 1.

Quando usar unstack() com pivot() no Pandas?

A função unstack() e a função pivot() no Pandas são usadas para remodelar dados, mas têm propósitos ligeiramente diferentes e são usadas em cenários diferentes.

A função unstack() é usada quando você tem um DataFrame com um índice de vários níveis e deseja mover um ou mais níveis do índice para os cabeçalhos das colunas. Isso é frequentemente útil quando você tem dados hierárquicos e deseja reorganizar seus dados para facilitar a análise.

Por outro lado, a função pivot() é usada quando você deseja remodelar seus dados com base nos valores das colunas. Ele permite transformar ou remodelar dados do formato longo para o formato amplo. É frequentemente usado quando você tem medidas repetidas para os mesmos sujeitos e deseja colocar cada sujeito em sua própria linha, com cada medida em uma coluna separada.

Aqui está um exemplo de como você pode usar tanto unstack() quanto pivot() na mesma análise:

import pandas as pd
 
## Criar um DataFrame
df = pd.DataFrame({
    'data': pd.date_range(start='2023-01-01', periods=3),
    'país': ['EUA', 'Reino Unido', 'CA'] * 3,
    'produto': ['A', 'B', 'C'] * 3,
    'vendas': range(1, 10)
})
 
## Pivotar o DataFrame
df_pivot = df.pivot(index='data', columns='país', values='vendas')
 
## Desempilhar o DataFrame
df_desempilhado = df.set_index(['data', 'país']).unstack('país')
 
print(df_pivot)
print(df_desempilhado)

Neste exemplo, primeiro usamos pivot() para obter cada país em sua própria coluna, com as vendas como valores. Em seguida, usamos unstack() para obter o mesmo resultado, mas movendo o nível 'país' do índice para os cabeçalhos das colunas.

Em conclusão, se deve usar unstack() ou pivot() depende da estrutura de seus dados e da operação de remodelação específica que você deseja realizar. Ambos são ferramentas poderosas para remodelar dados no Pandas, e entender como usá-los efetivamente pode aprimorar muito suas capacidades de análise de dados.

Conclusão

Dominar a arte de desempilhar no Pandas pode melhorar significativamente suas capacidades de manipulação de dados. A função unstack() é uma ferramenta poderosa que permite pivotar dados de linhas para colunas, oferecendo uma nova perspectiva sobre seus dados. Seja lidando com índices hierárquicos ou desejando pivotar um nível do seu DataFrame, unstack() é uma função que deve estar presente no arsenal de todo analista de dados. Com o conhecimento e exemplos fornecidos neste artigo, você está agora equipado para começar a desempilhar seus próprios data frames no Pandas. Feliz desempilhamento!

Perguntas frequentes (FAQs)

O que faz o unstack() no pandas?

A função unstack() no Pandas é usada para remodelar um data frame. É um método que "pivota" um DataFrame de um formato longo (ou empilhado) para um formato largo. Basicamente, move os dados das linhas para as colunas, fornecendo uma nova visualização dos dados.

Como desempilhar dados no pandas?

Desempilhar dados no Pandas é fácil uma vez que você entende o conceito. A função unstack() é chamada em um objeto DataFrame e recebe um argumento opcional: o nível a ser "desempilhado" ou pivotado. Se nenhum nível for especificado, a função unstack() irá desempilhar o último nível do índice do DataFrame. Se você quiser desempilhar um nível diferente, você pode especificá-lo pelo seu número de índice ou nome.

Quando usar unstack() com pivot() no pandas?

A função unstack() e a função pivot() no Pandas são usadas para remodelar dados, mas têm propósitos ligeiramente diferentes e são usadas em cenários diferentes. A função unstack() é usada quando você tem um DataFrame com um índice de vários níveis e deseja mover um ou mais níveis do índice para os cabeçalhos das colunas. A função pivot() é usada quando você deseja remodelar seus dados com base nos valores das colunas.