Entenda a Função Melt do Pandas
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
- Dots do ChatGPT: o que é e como usar esse agente de IADescubra o que é o Dots do ChatGPT, como configurar, integrar com Slack e agenda e se vale a pena usar esse novo agente de IA da OpenAI.
- GPT-6 Astra: 7 usos reais do novo modelo da OpenAIVeja 7 usos reais do GPT-6 Astra, o novo modelo da OpenAI que executa tarefas sozinho no computador. Entenda como ele funciona e onde ainda erra.
- Jev IA: o que é e como usar essa IA que não escreveEntenda o que é o Jev IA, a inteligência artificial classificadora mais rápida e barata do mercado, e veja 5 usos práticos para seus fluxos.
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








