Aprenda como usar a função melt do Pandas para te auxiliar na hora de separar informações e torná-las mais visuais e fáceis de trabalhar.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Entenda a Função Melt do Pandas
Na aula de hoje, eu vou abordar a função melt do Pandas, uma função que te ajudará na hora de separar informações, tornando-as mais visuais e fáceis de trabalhar.
Essa função nos permite transformar um DataFrame de formato largo em um DataFrame longo. Basicamente, a ideia é pegar uma tabela com várias colunas e transformar essas colunas em linhas.
Geralmente, quando trabalhamos com dados, encontraremos bases de dados que não estão prontas para uso imediato. Portanto, precisamos fazer alguns tratamentos e transformações antes de começar a análise dos dados.
O método melt é uma dessas transformações possíveis. Além dele, também mostrarei como reorganizar os dados e utilizar o método rsplit para preparar sua base de dados para uma análise completa.
Faça o download do material disponível e venha comigo aprender a utilizar a função melt do Pandas.
Visualizando a Base de Dados
No material disponível para download, você encontrará a base de dados que utilizaremos ao longo desta aula.
Nela, temos dados fictícios que simulam o registro de satisfação dos clientes com a empresa. Esses dados incluem satisfação geral, satisfação com produtos e satisfação com serviços ao longo de três meses.
Podemos visualizar esses dados gerando o DataFrame com o Pandas e verificando as informações presentes.
import pandas as pd BASE = "./dados/dados_satisfacao.csv" dados = pd.read_csv(BASE) dados

As informações coletadas estão organizadas de forma que cada linha representa um cliente e suas respostas para cada categoria de satisfação em diferentes meses.
Note que os dados estão estruturados em um DataFrame largo (wide) e, para esta análise e visualização das informações, será melhor se estiverem dispostos em um formato longo (long). Para isso, a função melt será essencial.
Método melt do Pandas
O método melt serve para transformar um DataFrame de formato largo para um formato longo.
Em um DataFrame de formato largo, as colunas representam diferentes variáveis, e os dados de cada variável são mantidos separados.
No formato longo, os dados são reorganizados de modo que cada linha representa uma observação individual de uma variável específica.
O método melt “derrete” (ou seja, transforma) colunas selecionadas em duas colunas: uma que contém o nome das variáveis e outra que contém os valores dessas variáveis.
O uso da função melt é principalmente útil em três cenários:
1. Reorganizar os dados: Você precisa reorganizar seus dados para que cada observação seja representada por uma única linha. Isso é particularmente útil em preparação para análises que requerem um formato longo, como muitas funções de bibliotecas estatísticas e de visualização de dados.
2. Transformar múltiplas colunas em uma única coluna: Quando suas variáveis estão espalhadas em várias colunas e você deseja consolidá-las em uma única coluna para facilitar a manipulação e a análise.
3. Dados com diferentes categorias e períodos: Quando você tem dados que incluem diferentes categorias e períodos e você deseja transformar essas categorias e períodos em linhas distintas.
Para mais detalhes sobre o método melt, você pode conferir a documentação oficial aqui:
Aplicando a Função Melt
O melt pode ser aplicado tanto como uma função quanto como um método do Pandas, com algumas diferenças na sintaxe entre elas, mas a aplicação é a mesma.
Vamos utilizar a função melt passando para ela nosso DataFrame e os parâmetros id_vars, value_vars, var_name e value_name.
O id_vars são as colunas que permanecerão fixas e não serão derretidas. Elas servirão como identificadores do nosso novo DataFrame.
Por sua vez, o value_vars são as colunas que serão “derretidas”. Cada uma dessas colunas será transformada em uma linha da nova estrutura.
Já os parâmetros var_name é o nome que será criado para conter o nome das variáveis que anteriormente estavam em colunas. E value_name é o nome da nova coluna que será criada para conter o valor das variáveis.
# Usando melt para transformar o DataFrame dados_melt = pd.melt( dados, id_vars=["cliente_id", "idade", "genero"], value_vars=[ "satisfacao_geral_01-2024", "satisfacao_geral_02-2024", "satisfacao_geral_03-2024", "satisfacao_produto_01-2024", "satisfacao_produto_02-2024", "satisfacao_produto_03-2024", "satisfacao_servico_01-2024", "satisfacao_servico_02-2024", "satisfacao_servico_03-2024", ], var_name="categoria_mes", value_name="nota", ) dados_melt

Repare que agora temos todas as categorias com os meses, que antes eram colunas, organizadas em linhas, assim como as notas. Dessa forma, temos uma visualização e organização mais eficaz dos dados, facilitando a análise posterior deles.
Separando Colunas com o Método Rsplit
Mesmo obtendo uma melhor disposição dos dados a partir do método melt, podemos melhorar ainda mais a visualização deles. Se observarmos o nosso DataFrame atual, veremos que temos uma mesma coluna para categoria e data.
Seria interessante dividirmos essa coluna em duas novas: uma apenas para categoria e outra para data.
Podemos fazer isso utilizando o método rsplit (right split), uma função de string em Python que divide um texto (string) em uma lista de substrings, semelhante ao método split.
A diferença entre eles é que o rsplit divide a string a partir do final, ou seja, da direita para a esquerda, enquanto o método split divide a partir do começo.
Como nosso objetivo é separar a data da categoria, o método rsplit se torna mais efetivo, pois podemos passar o underscore como separador e definir o número de divisões como 1. Dessa forma, ao encontrar o primeiro _, o método irá separar a string em duas partes.
Isso é útil quando precisamos dividir uma string em partes específicas utilizando um separador que aparece mais de uma vez, como nesse caso em que queremos dividir em categoria e mês.
Vamos criar essas duas colunas no nosso DataFrame dados_melt e utilizar o método rsplit.
Como parâmetros, vamos definir o separador (sep), o número de divisões que serão feitas (n=1) e o expand=True, que expande a divisão em várias colunas, retornando um DataFrame que é então atribuído às colunas categoria e mes.
Feito isso, podemos remover a coluna original categoria_mes utilizando o método drop.
# Separando 'categoria_mes' em 'categoria' e 'mes' dados_melt[["categoria", "mes"]] = dados_melt["categoria_mes"].str.rsplit( "_", n=1, expand=True ) dados_melt = dados_melt.drop(columns=["categoria_mes"]) dados_melt

Assim, temos as categorias e os meses separados em colunas distintas.
Para mais detalhes sobre o método rsplit, você pode conferir a documentação oficial aqui:
Ajustando os Tipos de Dados
Se verificarmos as informações desse DataFrame resultante, veremos que a coluna mes está sendo reconhecida como object, ou seja, texto.
dados_melt.info()

Como vimos na aula sobre Otimizar DataFrames, um dos principais pontos é ajustarmos os dados para que eles sejam reconhecidos e utilizados de forma correta.
Por isso, usaremos a função to_datetime para converter a coluna mes em uma coluna de data.
# coluna mes para datetime dados_melt["mes"] = pd.to_datetime(dados_melt["mes"], format="%m-%Y") dados_melt

Agora que a coluna mes passou a ser do tipo data, podemos exibir apenas o mês na coluna, ao invés da data completa.
# pegar apenas o mês da data dados_melt["mes"] = dados_melt["mes"].dt.month dados_melt

Tipo Categórico
Assim como fizemos a conversão da coluna mes para o tipo data, podemos fazer a conversão das colunas genero e categoria em tipos categóricos.
Esse tipo de dado é útil para fazermos agrupamentos e categorizações, conforme vimos na aula Como Criar Categorias no Pandas.
Utilizar os tipos categóricos em colunas com poucos valores únicos facilita as análises que podemos construir.
# colunas 'genero' e 'categoria' para categorias dados_melt["genero"] = dados_melt["genero"].astype("category") dados_melt["categoria"] = dados_melt["categoria"].astype("category") dados_melt

dados_melt.info()

Feitas essas conversões, temos nossos dados preparados para uma manipulação e análise mais eficiente e assertiva. A partir disso, podemos construir e realizar diferentes análises de dados, de acordo com nosso objetivo.
Conclusão – Entenda a Função Melt do Pandas
Na aula de hoje, você aprendeu a utilizar o método melt para transformar múltiplas colunas em uma única coluna, tornando a análise e visualização dos dados mais eficiente e prática.
Vimos também como utilizar o método rsplit para separar uma coluna em duas ou mais, com base em um padrão.
Por fim, vimos a importância da transformação dos tipos de dados para data e tipo categórico, facilitando e otimizando as análises futuras que podemos fazer.
Caso queira conhecer outras formas e métodos de reorganização de dados com Pandas, deixo aqui a nossa aula sobre como fazer Reshaping no Pandas.
Além disso, se você fizer o download do material disponível, encontrará uma aplicação bônus desse mesmo processo sendo feito com o método wide_to_long.
Hashtag Treinamentos
Para acessar outras publicações de Ciência de Dados, clique aqui!
Posts mais recentes da Hashtag Treinamentos
- Termos Carinhosos em Inglês: Como Chamar seu Mozão?Aprenda os principais termos carinhosos em inglês, seus significados e como usá-los corretamente para se referir a quem você ama.
- Guia rápido – Aprenda como usar Bootstrap do ZeroQuer criar sites bonitos e responsivos sem complicação? Aprenda como usar Bootstrap, uma ferramenta que te permite criar páginas completas com o mínimo de dificuldade e esforço!
- Como Falar o Seu Endereço em Inglês?Aprenda a falar e escrever seu endereço em inglês corretamente. Descubra a estrutura certa, pronúncia dos números e expressões essenciais neste guia detalhado.
- Deixe sua planilha automatizada com Copilot no ExcelCom o Copilot integrado ao Excel, você pode criar uma planilha automatizada, com relatórios, formatação condicional inteligente e gráficos gerados em segundos.
- Como os YouTubers ganham dinheiro? Estratégias Reais para Monetizar no YouTubeDescubra como os YouTubers ganham dinheiro de verdade, explorando estratégias além dos anúncios, como patrocínios, marketing de afiliados e negócios próprios.
- IA para RH: veja como o ChatGPT vai transformar seu trabalho!Aprenda os melhores usos da IA para RH e economize tempo e esforço! Transforme seu trabalho com o ChatGPT para os Recursos Humanos!

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.