Pandas pandas.melt() Função
- 
          
            Sintaxe de pandas.melt()
- 
          
            Códigos de exemplo: pandas.melt()
- 
          
            Códigos de exemplo: pandas.melt()Com uma única coluna comoid_vars
- 
          
            Códigos de exemplo: pandas.melt()Com colunas de pulo
- 
          
            Códigos de exemplo: pandas.melt()Com várias colunas
 
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 DataFrameque desejamos mudar para o formato longo. | 
| id_vars | opcional | Pode ser um tuple, uma lista ou umaarrayN-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 umaarrayN-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 nossoDataFrame. | 
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.