Pandas Melt – 将数据帧从宽格式反转为长格式

在Python中,pandas是用于数据修改和分析的最高效、最简单、最强大的开源库工具。Pandas 融化函数是用于调整 Pandas 数据框大小的技术之一,这在数据科学中特别有用。Pandas 熔体函数可以用作。熔化() 熊猫中的函数。本文将更详细地介绍 Pandas 的 Melt 函数,以便您可以充分了解它最重要的功能以及它如何与 Python 配合使用。我们将首先回顾一下该方法的语法和参数。之后,我们将使用一些示例以及实现来解释 pd.melt() 函数的每个参数。

熊猫融化会做什么?

熔化函数帮助我们将数据帧从宽格式重塑为长格式。使用它可以简化我们的数据集,并且我们可以轻松分析数据并从中获得更多见解。在 Pandas.melt() 中,数据框对象以指定的格式创建,其中一列或多列充当标识符。简单来说,对于每一列,我们将有一行。因此,保留一列或多列:标识符。其余列均视为值。

在 python 中,标识符是变量、类、函数和数组等的名称。例如:

Name = "ABC"

在上面的代码中,Name 是一个变量(标识符),其中包含值 ABC。

宽而长的数据框:

让我们看看 DataFrame 的宽度和长度,以便更好地了解 pandas.melt() 函数。下面是宽格式的 DataFrame 图像:

宽格式数据框

现在,默认情况下 DataFrame 在 Pandas 中采用宽格式。让我们看一下长格式的同一个 DataFrame:

长格式数据帧

语法和参数:

语法: 我们可以使用两种类型的语法来应用熔化函数:

DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index= True)
 
pandas.melt(frame,id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index = True)

参数:

frame :  DataFrame
id_vars [元组、列表或数组,可选]:标识用作变量的列。
value_vars [元组、列表或数组,可选]: 逆透视列,如果未提供任何内容,则使用所有列。
var_name[标量]: 用作“变量”列的名称。
value_name[scalar, default ‘value’]: 应使用列的名称。
col_level[int 或 string, 可选]: 使用此级别来融化列是否为 MultiIndex。

ignore_index[True or False]:默认True,表示是否忽略原始索引。

实施。熔化()功能:

现在您已经清楚了 to_melt() 函数的语法。现在,让我演示一下如何使用它。

导入 Pandas 并创建数据框:

首先,我们将使用 import pandas 语法导入 pandas 库。为了使用处理日期值的函数,我们必须将 pandas 导入为 pd。此外,我们需要这个库才能使用其他重要工具,例如 Melt() 函数和许多其他函数。出于简单的目的,我们在这里将其导入为 pd。之后,我们必须制作一个 Dataframe 来轻松理解熔化函数的概念。您还可以读取 excel 和 CSV 文件来应用融化函数,但为了理解,我正在创建自己的 Dataframe。

要了解有关 pandas 库基础知识的更多信息,请查看本教程

1
2
3
4
5
6
7
8
9
import pandas as pd                                                                                                                                                                                                            
 
data = {
'Name': ['Aman', 'Rohini', 'Neha'],
'Age': [56, 23, 32],
'Rank': [1, 2, 3]
}  
 
df = pd.DataFrame(data)                                                                                                                                                                                                    df
熊猫数据框

正在申请。熔化()功能:

现在我要申请。熔化() 直接在数据帧(df)上。让我们看看输出。

df.melt()
熔化函数

让我们看看当我们添加 id_vars 和 value_vars 参数时会发生什么。熔化()

添加单个值id_vars值变量:

df2 = df.melt( id_vars =['Name'], value_vars =['Age'])                                                                                                                                                            df2
带参数的熔化函数

从上面的输出中,我们可以看到只有一个变量Age,并且Name被用作标识列。

添加多个值id_vars值变量:

让我们看看当我们向 value_vars 参数添加多于一列时会发生什么。同样,我们也可以在 id_vars 中添加多列。下面给出了这样的一个例子:

df2 = df.melt( id_vars =['Name'], value_vars =['Age','Rank'])                                                                                                                                                     df2
带参数的熔化函数
df2 = df.melt( id_vars =['Name', 'Age'], value_vars =['Rank'])                                        
带参数的熔化函数

定制:

我们还可以通过添加 var_name 和 value_name 参数来自定义 Dataframe。下面给出了一个这样的例子:

df.melt(id_vars =['Name'], value_vars =['Rank','Age'],
              var_name ='Newname', value_name ='Newnumerical')
融化定制。

添加列级:

col level 参数可用于使用列级别的索引来融合 DataFrame,如下例所示:

df.melt(id_vars =['Name'], value_vars =['Rank','Age'],
var_name ='Newname', value_name ='Newname' , col_level=0)
带参数的熔化函数

添加忽略索引:

为了忽略或保留原始索引,我们使用ignore_index函数。如果为 false,则保留原始索引。以下是这两种情况的示例:

df.melt(id_vars =['Name'], value_vars =['Rank','Age'],
              var_name ='Newname', value_name ='Newnerical' , col_level=0, ignore_index = True)
带参数的熔化函数
df.melt(id_vars =['Name'], value_vars =['Rank','Age'],
              var_name ='Newname', value_name ='Newnerical' , col_level=0, ignore_index = False)
带参数的熔化函数

结论:

在本教程中,您了解了 Pandas melt() 函数,该函数使您能够将数据框从宽格式重塑为长格式。我希望您理解上面提出的想法和插图,并且现在准备将它们应用到您的 Pandas DataFrame 中。谢谢阅读!请继续关注我们,获取更多精彩的 Python 编程学习材料。

参考:

这是 pydata文档页面,解释了如何使用 pandas.melt() 函数,包括其参数、允许的值以及函数的工作原理。