Resumo Método melt()

O método melt() é uma ferramenta bastante utilizada para a transformação de dados no Python. Ele faz parte da blibioteca Pandas e é responsável por transformar um DataFrame em um formato mais longo, reorganizando as colunas em linhas, tornando-os mais adequados para análise e visualização de dados. Esse comportamento é o que chamamosde transformação de um DataFrame de "Wide to long" (ampla para longa).

Em um conjunto de dados do tipo "wide", temos muitas colunas com diferentes tipos de informações. Já em um tipo de "long" temos menos colunas e mais linhas, com cada linha contendo várias parcelas de informação. Ao usar melt(), estamos transformando de colunas do nosso DataFrame em linhas para formar um conjunto de dados mais longo.

Para entender esse comportamento, vamos testar em um exemplo. Recebemos o DataFrame abaixo para construir um gráfico de colunas que representa, ano a ano, as vendas de 3 produtos de um mercado. Os dados estão expressos em toneladas.

import pandas as pd

# Criando um dataframe
vendas_ton = pd.DataFrame({'Produto': ['Arroz', 'Feijão', 'Açúcar'],
                            '2020': [90, 85, 88],
                            '2021': [92, 94, 89],
                            '2022': [84, 88, 92],
                            '2023': [100, 98, 87]})
vendas_ton

Saída:

Produto 2020 2021 2022 2023
0 Arroz 90 92 84 100
1 Feijão 85 94 88 98
2 Açúcar 88 89 92 87

Podemos perceber que temos um DataFrame com cada ano como uma coluna, configurando-o como do tipo "wide". É possível trabalhar com ele dessa forma, mas podemos, por exemplo, trazer os dados dos anos para uma única colunas e seus valores correspondentes em outra colunas se quisermos transformar o nosso conjungto de dados para um formato longo.

Então, podemos utilizar o método melt() no nosso DataFrame da seguinte forma:

vendas_ton_melt = vendas_ton.melt(id_vars='Produto', var_name='Ano', value_name='Toneladas')
vendas_ton_melt

Saída:

Produto Ano Toneladas
0 Arroz 2020 90
1 Feijão 2020 85
2 Açúcar 2020 88
3 Arroz 2021 92
4 Feijão 2021 94
5 Açúcar 2021 89
6 Arroz 2022 84
7 Feijão 2022 88
8 Açúcar 2022 92
9 Arroz 2023 100
10 Feijão 2023 98
11 Açúcar 2023 87

Agora, temos o nosso DataFrame devidamente convertido para um tipo "long" e podemos prosseguir para a criação do gráfico requisitado.

Fonte: ALURA