使用 Pandas Melt 将宽数据帧重塑为带有标识符的整洁
有时我们需要重塑 Pandas 数据框以更好地进行分析。重塑在数据分析中起着至关重要的作用。 Pandas 提供了诸如melt 和unmelt 之类的函数来重塑。在本文中,我们将看到什么是 Pandas Melt 以及如何使用它来将 Wide 重塑为带有标识符的 Tidy。
Pandas Melt(): Pandas.melt() 将 DataFrame 从宽格式逆透视为长格式。 Pandas Melt()函数用于将 DataFrame 设计从宽更改为长。它用于对 DataFrame 对象进行特定配置,其中至少有一个段作为标识符填充。所有其余的部分都被视为品质,不以线支点为中心,只有两个部分,可变的和有价值的。
Syntax: Pandas.melt(column_level=None, variable_name=None, Value_name=’value’, value_vars=None, id_vars=None, frame)
Parameters:
- frame : DataFrame
- id_vars[tuple, list, or ndarray, optional]: Column(s) to use as identifier variables.
- value_vars[tuple, list, or ndarray, optional]: Column(s) to unpivot. If not specified, uses all columns that are not set as id_vars.
- var_name[scalar]: Name to use for the ‘variable’ column. If None it uses frame.columns.name or ‘variable’.
- value_name[scalar, default ‘value’]: Name to use for the ‘value’ column.
- col_level[int or string, optional]: If columns are a MultiIndex then use this level to melt.
示例 1:
Python3
# 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()
Python3
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']))
输出:
说明:在本例中,我们使用泊松分布创建了三个数据集,并使用熊猫创建了一个数据框。然后使用melt()函数在两列中以长格式重构数据并重命名两列。默认情况下,第一列称为“变量”,它包含列/变量名称。第二列名为“value”,它包含来自宽格式数据框的数据。
示例 2:
蟒蛇3
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()函数,我们将长格式的数据改造成三列,并将名称指定为id,将变量指定为Score the person,将值指定为他们的分数。除了“id”列,第一列默认称为“变量”,它包含列/变量名称。第二列名为“value”,它包含来自宽格式数据框的数据。