🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 27 de julho de 2024

Veja como usar a função wide to long do Pandas para te auxiliar na hora de transformar uma base de dados larga para uma base de dados longa.

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 Wide to Long do Pandas – wide_to_long()

Na aula de hoje, vamos explorar como a função wide_to_long do Pandas pode te ajudar a transformar uma base de dados larga (wide – com muitas colunas) em uma base de dados longa (long – com muitas linhas).

Utilizando a função wide_to_long do Pandas, você conseguirá converter múltiplas colunas em uma única coluna, tornando a análise e visualização dos dados mais eficiente e prática.

Isso resultará em uma base de dados mais organizada e fácil de trabalhar, possibilitando uma análise e visualização dos dados mais efetiva.

Então, faça o download do material disponível e vem comigo aprender a usar a função wide_to_long do Pandas.

Quer se especializar ainda mais em ferramentas essenciais para análise de dados? Inscreva-se no nosso Curso Cientista de Dados e dê o próximo passo na sua carreira!

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 de uma empresa que gerencia informações financeiras de diferentes produtos ao longo do ano. Os dados de vendas e despesas são coletados trimestralmente e estão organizados em uma base de dados em formato largo.

Dessa forma, cada coluna representa um trimestre específico do ano. O objetivo é utilizar a função wide_to_long para reorganizar os dados e facilitar as análises temporais e outros cálculos.

Podemos visualizar esses dados gerando o DataFrame com o Pandas e verificando as informações presentes.

import pandas as pd

BASE = "./dados/vendas_produtos_trimestres.csv"
dados = pd.read_csv(BASE)
dados
Dados no formato largo

Perceba que cada linha do DataFrame representa um produto da empresa, e as colunas são organizadas em vendas e despesas por trimestre (T1, T2, T3 e T4).

Seria mais interessante e organizado se tivéssemos uma única coluna para indicar os trimestres, outra para as vendas e outra para as despesas.

A função wide_to_long nos permite fazer essa mudança de formato e reorganizar os dados para facilitar as análises futuras.

Função wide_to_long do Pandas

A função wide_to_long do Pandas é utilizada para transformar um DataFrame de formato largo para um formato longo, especialmente quando os nomes das colunas seguem um padrão consistente.

Esse método é particularmente útil quando as colunas do DataFrame possuem um prefixo comum e diferentes sufixos que indicam variáveis específicas ou períodos de tempo.

A função wide_to_long reorganiza os dados de modo que várias colunas de uma variável são combinadas em uma única coluna.

Ela converte o DataFrame de formato largo, onde cada coluna representa uma variável separada, em um DataFrame de formato longo, onde cada linha representa uma observação de uma variável específica.

A função wide_to_long é recomendada principalmente nos seguintes cenários:

1. Colunas com Padrões Consistentes: Os nomes das colunas seguem um padrão consistente, como um prefixo comum com diferentes sufixos que identificam variáveis ou períodos. Por exemplo: vendas_T1, vendas_T2, despesas_T1, despesas_T2.

2. Reorganizar Variáveis Repetidas: Você precisa transformar variáveis que se repetem em colunas distintas para uma única coluna com todas as observações, facilitando análises e visualizações.

3. Facilitar Análises Temporais: Quando os dados são coletados ao longo de diferentes períodos e você deseja reorganizá-los para realizar análises temporais ou comparações entre diferentes categorias.

Para mais detalhes sobre a função wide_to_long, você pode conferir a documentação oficial aqui:

Aplicando a Função wide_to_long

Vamos aplicar a função wide_to_long ao nosso DataFrame de exemplo para compreendermos na prática como utilizá-la.

Para essa função, passaremos o DataFrame que será transformado e os parâmetros stubnames, i, j, sep e suffix.

O stubnames são os prefixos comuns das colunas que serão transformadas, o padrão de nome que se repete. As colunas que serão transformadas devem começar com um desses prefixos determinados.

O i são os nomes das colunas que identificam de forma única cada linha. Nesse caso, temos as colunas produto_id e produto_nome. Podemos passar as duas como parâmetro, ou apenas uma delas.

Todas as colunas não especificadas para nenhum parâmetro são mantidas inalteradas pela função.

O parâmetro j refere-se ao nome da nova coluna que será criada e receberá os valores dos sufixos, no nosso caso será a coluna trimestre, que receberá os sufixos T1, T2, T3 e T4.

O sep é o separador entre o stubname e o sufixo nas colunas que queremos transformar. Por padrão, ele é uma string vazia, mas no nosso exemplo utilizaremos um underscore (_), pois é o que separa os prefixos das nossas colunas dos sufixos.

Por fim, temos o parâmetro suffix que por padrão, é um \\d+. Esse parâmetro representa uma expressão regular para os sufixos das colunas que serão transformadas. O padrão é um ou mais dígitos.

Para o nosso exemplo, utilizaremos a expressão regular \w+, que corresponde a um ou mais caracteres alfanuméricos (letras maiúsculas e minúsculas e dígitos).

Caso você tenha alguma dúvida sobre expressões regulares ou queira se aprofundar e compreender melhor o conceito, recomendo essas duas aulas:

Agora que já compreendemos os parâmetros da função wide_to_long, vamos aplicá-la ao nosso caso.

# Usando wide_to_long para transformar o DataFrame

dados_long = pd.wide_to_long(
    dados,
    stubnames=["vendas", "despesas"],
    i=["produto_id", "produto_nome"],
    j="trimestre",
    sep="_",
    suffix=r"\w+",  # w+ significa que vai pegar qualquer caractere alfanumérico
).reset_index()

dados_long

Perceba que utilizamos o prefixo r antes da expressão regular para evitar interpretações erradas da barra presente dentro dessa expressão. Isso indica para o Python que aquela é uma raw string.

Ao final da transformação, por padrão, a função wide_to_long altera o índice do DataFrame. Para mantermos o índice padrão do Pandas, usamos a função reset_index, como foi feito.

Executando o código acima, teremos o nosso DataFrame transformado de um formato wide para um formato long.

Dados no formato longo

Repare que agora temos uma coluna para todos os trimestres, vendas e despesas. Isso melhora a visualização e organização dos dados, facilitando as análises e demais tratamentos que desejarmos fazer.

Após a transformação dos dados, é possível continuar a otimizar nosso DataFrame, realizar diferentes análises de dados e criar gráficos representativos das informações analisadas utilizando o Matplotlib.

Função Melt e wide_to_long

A função wide_to_long é basicamente uma versão da função melt, criada para casos em que temos padrões de nomes que se repetem consistentemente.

Na análise de dados, existem diversas formas de alcançar o mesmo resultado; em alguns casos, algumas abordagens podem ser mais eficientes e otimizadas do que outras.

No caso das funções wide_to_long e melt, ambas possuem etapas semelhantes e não há muita diferença em termos de trabalho e procedimentos necessários para alcançar o objetivo.

A escolha entre elas é subjetiva. Algumas pessoas podem achar uma das abordagens mais natural e fácil do que a outra, dependendo da linha de raciocínio e lógica que você está construindo.

Ambos os exemplos, o desta aula e o da aula sobre a função melt, poderiam ser solucionados utilizando qualquer uma das duas funções.

Caso você queira conhecer como utilizar a função melt, deixo aqui a nossa aula sobre ela:

•             https://www.hashtagtreinamentos.com/funcao-melt-ciencia-de-dados

Eu aconselho que você acompanhe as duas aulas para compreender como resolver o mesmo problema por diferentes métodos e, assim, refletir sobre qual abordagem faz mais sentido para você e para o caso em que estiver trabalhando.

Conclusão – Entenda a Função Wide to Long do Pandas – wide_to_long()

Na aula de hoje, você aprendeu como utilizar a função wide_to_long do Pandas para transformar múltiplas colunas em uma única coluna, tornando a análise e visualização dos dados mais eficiente e prática.

Assim como a função melt, essa é uma ótima forma de otimizar e organizar dados com Pandas. 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, vimos que, apesar de algumas abordagens e etapas diferentes, tanto a função melt quanto a wide_to_long podem levar ao mesmo resultado.

Inclusive, no material disponível para download, você encontrará a aplicação da função wide_to_long ao mesmo exemplo abordado na aula sobre a função melt.

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

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