Jump to content

Utilização da função Melt do Pandas - Unpivot nos dados


Thanael

Postagens Recomendadas

  • Pessoal da TecnoSpeed

Olá pessoal tudo bem?

Vou mostrar uma forma simples de realizar o Unpivot nos dados atravês da função melt( ) do Pandas.
Porém, primeiramente vou explicar o que é este Unpivot e sua utilidade.

Unpivot

O Unpivot consiste no ato de "Girar uma tabela transformando colunas em linhas.". Pode parecer confuso, mas na imagem abaixo vai ficar mais simples de entender.

image.png

Quando usar

Essa técnica é muito utilizada na manipulação dos dados para padronizar a estrutura dos dados, perceba que é muito mais simples trabalhar com os dados com as colunas (Attributes e Values) do que precisar trabalhar com todos as N colunas que existiam anteriormente (A1, A2, A3 e assim por diante).

Algumas das utilizações mais comuns são em dados provindos de planilhas, no qual a estrutura da planilha é muito similar a primeira tabela da Imagem (Colunas: A1, A2, A3 e etc) por ser uma estrutura mais fácil de trabalhar em planilhas. Porém, esse tipo de estrutura é muito difícil de se trabalhar em programação ou de armazenar e manipular elas em Banco de dados.

Como realizar esse processo de Unpivot nos dados em Python

Primeiramente vou mostrar aqui a estrutura de dados na qual vou estar trabalhando. Perceba que na estrutura de dados a seguir as colunas sobre os Vendedores estão na seguinte forma (VendedorA, VendedorB, VendedorC e VendedorD). 

image.png

Essa estrutura não é muito simples de se trabalhar em um banco de dados, por exemplo, e como pretendemos levar essas informações para o banco de dados precisamos realizar a adaptação desses dados para um formato mais simples de se trabalhar.

pandas.melt( )

Para realizar esse Unpivot nos dados vamos usar a função pandas.melt (Link para documentação com alguns exemplos práticos).

pd.melt(
    df ,
    id_vars=['Data','Loja'], 
    value_vars=['VendedorA','VendedorB','VendedorC','VendedorD'],
    var_name = 'Vendedor',
    value_name = 'Valor'
).sort_values(by = ['Data','Loja'])

Obs: caso as colunas que desejo fazer o Unpivot seja algo que possa variar existem outras formas obtê-las, por exemplo. Desta forma vai trazer todas as colunas menos as que não desejo fazer o Unpivot. (coloca esse comando no value_vars)

[coluna for coluna in df.columns if coluna not in ['Data','Loja']]

Resultado

Após utilizar o pandas.melt teremos o seguinte resultado.

image.png

Sendo essa uma estrutura de dados muito mais fácil para realizar as analises via Programação (Python, R etc) ou até mesmo para realizar consultas via SQL.

Considerações Finais

Enfim essa é a uma das formas que utilizo para realizar o Unpivot nos dados, existem inúmeras outras formas, algumas mais simples, outras mais complexas, porém a que julgo mais simples e eficaz e esta que ensinei a vocês.

Espero que esse conteúdo seja útil para vocês e qualquer dúvida deixe nos comentários que ficarei feliz em responder. 

  • Curtir 1
  • Amei 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...