使用Pandas Melt将Wide DataFrame重塑为带有标识符的Tidy
有时我们需要重塑Pandas数据框架,以更好的方式进行分析。重塑在数据分析中起着至关重要的作用。Pandas提供了像熔化和解除熔化这样的函数来进行重塑。在这篇文章中,我们将看到什么是Pandas Melt,以及如何使用它来重塑带有标识符的广义数据到Tidy。
Pandas Melt(): Pandas.melt()将一个DataFrame从宽格式转为长格式。Pandas melt()函数被用来将DataFrame的设计从宽格式改为长格式。它被用来对DataFrame对象进行特殊的配置,其中至少有一个段被填充为标识符。所有其余的部分都被视为质量,并且没有指向行枢axis,只有两个段,变量和价值。
语法: Pandas.melt(column_level=None, variable_name=None, Value_name=’value’, value_vars=None, id_vars=None, frame)
参数:
- frame : DataFrame
- id_vars[tuple, list, or ndarray, optional] : 用来作为标识符变量的列。
- value_vars[元组,列表,或ndarray,可选]:要取消透视的列。如果不指定,则使用所有未被设置为id_vars的列。
- var_name[scalar] : 用于 “变量 “列的名称。如果没有,则使用 frame.columns.name 或 ‘variable’。
- value_name[标量,默认为’value’] : 用于’value’列的名称。
- col_level[int or string, optional] : 如果列是一个MultiIndex,那么使用这个级别来融化。
示例 1:
# Load the libraries
import numpy as np
import pandas as pd
from scipy.stats import poisson
# We will use scipy.stats to create
# random numbers from Poisson distribution.
np.random.seed(seed = 128)
p1 = poisson.rvs(mu = 10, size = 3)
p2 = poisson.rvs(mu = 15, size = 3)
p3 = poisson.rvs(mu = 20, size = 3)
# Declaring the dataframe
data = pd.DataFrame({"P1":p1,
"P2":p2,
"P3":p3})
# Dataframe
print(" Wide Dataframe")
display(data)
data.melt()
# Change the names of the columns
data.melt(var_name = ["Sample"]).head()
# Specify a name for the values
print("\n Tidy Dataframe")
data.melt(var_name = "Sample",
value_name = "Count").head()
输出:
解释:在这个例子中,我们使用泊松分布创建了三个数据集,并使用pandas创建了一个数据框架。然后使用melt()函数,我们将数据重塑为两列的长格式,并重新命名这两列。第一列默认称为 “变量”,它包含了列/变量名称。第二列被命名为 “值”,它包含来自广义数据框的数据。
示例 2:
import pandas as pd
data = pd.DataFrame({'Name': {0: 'Samrat', 1: 'Tomar', 2: 'Verma'},
'Score': {0: '99', 1: '98', 2: '97'},
'Age': {0: 22, 1: 31, 2: 33}})
pd.melt(data, id_vars=['Name'], value_vars=['Score'])
display(pd.melt(data, id_vars=['Name'], value_vars=['Score']))
输出:
解释:在这个例子中,我们用pandas创建了一个数据框架。然后使用melt()函数将数据重塑为三列的长格式,并指定Name为id,变量为人的得分,数值为他们的分数。除了 “id “列之外,第一列默认称为 “variable”,它包含列/变量的名称。第二列被命名为 “值”,它包含来自广义表格数据框架的数据。
极客教程