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
- Aprenda a Criar Planilha de Estoque com ChatGPT e ExcelQuer aprender como criar uma planilha de estoque com ChatGPT e Excel? Aprenda como fazer isso de forma simples e direta!
- Conheça o Gemini, o ChatGPT do GoogleConheça o Gemini, a inteligência artificial do Google, que funciona basicamente como o ChatGPT do Google.
- Como Perguntar e Entender Direções em Inglês: Guia Completo para ViajantesAprenda como pedir e entender direções em inglês de forma clara e educada. Confira nosso guia completo com frases prontas e com as pronuncias adequadas.
- Power BI na Prática: Análises de CasosNeste guia 100% prático, vamos trabalhar em um case real de análise de perfil de cliente. Usaremos o Power BI para explorar dados e identificar oportunidades de negócios.
- Como usar o ChatGPT de Graça do Básico ao AvançadoVocê sabe como usar o ChatGPT de graça, aproveitando seus diversos recursos? Aprenda o passo a passo e como usar essa IA para melhorar sua produtividade!
- Data Driven: guia para profissionais que querem se destacarEntenda o que é Data Driven, como essa cultura transforma decisões empresariais e quais habilidades você precisa para se destacar nesse mercado!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.