Pandas pandas.melt() Função

Minahil Noor 30 janeiro 2023
  1. Sintaxe de pandas.melt()
  2. Códigos de exemplo: pandas.melt()
  3. Códigos de exemplo: pandas.melt() Com uma única coluna como id_vars
  4. Códigos de exemplo: pandas.melt() Com colunas de pulo
  5. Códigos de exemplo: pandas.melt() Com várias colunas
Pandas pandas.melt() Função

A função pandas.melt() funcionalidade reformula ou transforma um DataFrame existente. Ela muda a orientação do DataFrame de um formato amplo para um formato longo.

Sintaxe de pandas.melt()

pandas.melt(dataframe, id_vars, value_vars, var_name, value_name, col_level)

Parâmetros

Dataframe obrigatório É o DataFrame que desejamos mudar para o formato longo.
id_vars opcional Pode ser um tuple, uma lista ou uma array N-dimensional. É a coluna utilizada para as variáveis identificadoras. Você pode selecionar mais de uma coluna identificadora.
value_vars opcional Pode ser um tuple, uma lista ou uma array N-dimensional. Por padrão, as colunas não especificadas como variáveis identificadoras são variáveis de valor. Você também pode selecioná-las.
var_name opcional É uma variável do tipo scalar. É o nome da coluna identificadora. Por padrão, é variable.
value_name opcional É uma variável do tipo scalar. É o nome da coluna não-identificadora. Por padrão, ela é value.
col_level opcional É um inteiro ou um string. No caso de colunas com vários índices, podemos utilizar este parâmetro para transformar nosso DataFrame.

Retornar

Ele retorna um DataFrame transformado que contém uma ou mais colunas identificadoras e apenas duas colunas não-identificadoras nomeadas variável e valor.

Códigos de exemplo: pandas.melt()

A princípio, verificaremos esta função apenas passando o parâmetro obrigatório, ou seja, DataFrame.

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 78,4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: '90%', 1: '75%', 2: '82%',3: '64%',4: '45%'}})
dataframe1 = pd.melt(dataframe)

print(dataframe1)

Nosso DataFrame se parece com

   Attendance    Name Obtained Marks
0          60  Olivia            90%
1         100    John            75%
2          80   Laura            82%
3          78     Ben            64%
4          95   Kevin            45%

Resultado:

          variable   value
0       Attendance      60
1       Attendance     100
2       Attendance      80
3       Attendance      78
4       Attendance      95
5             Name  Olivia
6             Name    John
7             Name   Laura
8             Name     Ben
9             Name   Kevin
10  Obtained Marks     90%
11  Obtained Marks     75%
12  Obtained Marks     82%
13  Obtained Marks     64%
14  Obtained Marks     45%

Aqui, você pode ver que na saída não há coluna identificadora. Temos duas colunas não-identificadoras. Cada coluna da DataFrame original é agora uma linha na saída DataFrame.

Agora vamos passar os parâmetros opcionais e verificar os resultados.

Códigos de exemplo: pandas.melt() Com uma única coluna como id_vars

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(dataframe, id_vars=["Name"])

print(dataframe1)

Resultado:

     Name        variable value
0  Olivia      Attendance    60
1    John      Attendance   100
2   Laura      Attendance    80
3     Ben      Attendance    78
4   Kevin      Attendance    95
5  Olivia  Obtained Marks   90%
6    John  Obtained Marks   75%
7   Laura  Obtained Marks   82%
8     Ben  Obtained Marks   64%
9   Kevin  Obtained Marks   45%

A coluna identificadora é especificada como Name, e as colunas variable e value estão ao lado dela com os valores extraídos do DataFrame original.

Também poderíamos atribuir nomes de var_name e value_name para substituir as variable e value padrão.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(
    dataframe, id_vars=["Name"], var_name="Performance", value_name="Success"
)

print(dataframe1)

Resultado:

     Name     Performance Success
0  Olivia      Attendance      60
1    John      Attendance     100
2   Laura      Attendance      80
3     Ben      Attendance      78
4   Kevin      Attendance      95
5  Olivia  Obtained Marks     90%
6    John  Obtained Marks     75%
7   Laura  Obtained Marks     82%
8     Ben  Obtained Marks     64%
9   Kevin  Obtained Marks     45%

Códigos de exemplo: pandas.melt() Com colunas de pulo

Se quisermos verificar apenas o comparecimento, precisamos especificar o value_vars.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(
    dataframe,
    id_vars=["Name"],
    value_vars="Attendance",
    var_name="Performance",
    value_name="Success",
)
print(dataframe1)

Resultado:

     Name Performance  Success
0  Olivia  Attendance       60
1    John  Attendance      100
2   Laura  Attendance       80
3     Ben  Attendance       78
4   Kevin  Attendance       95

Ela mostra apenas as informações da coluna Attendance no campo de dados original.

Códigos de exemplo: pandas.melt() Com várias colunas

Acrescentamos uma coluna extra ID ao DataFrame de demonstração.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "ID": {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(dataframe, id_vars=["ID", "Name"])

print(dataframe1)

Resultado:

   ID    Name        variable value
0   1  Olivia      Attendance    60
1   2    John      Attendance   100
2   3   Laura      Attendance    80
3   4     Ben      Attendance    78
4   5   Kevin      Attendance    95
5   1  Olivia  Obtained Marks   90%
6   2    John  Obtained Marks   75%
7   3   Laura  Obtained Marks   82%
8   4     Ben  Obtained Marks   64%
9   5   Kevin  Obtained Marks   45%

As colunas ID e Name são designadas como colunas identificadoras.

Artigo relacionado - Pandas Core