📌  相关文章
📜  如何在 Pandas 中将分类变量转换为数值?

📅  最后修改于: 2022-05-13 01:55:16.211000             🧑  作者: Mango

如何在 Pandas 中将分类变量转换为数值?

在本文中,我们将学习如何使用 pandas 将分类变量转换为数值。

当我们查看分类数据时,任何人都会想到的第一个问题是如何处理这些数据,因为机器学习总是擅长处理数值。我们可以使用文本数据制作机器学习模型。因此,为了制作预测模型,我们必须将分类数据转换为数字形式。

方法一:使用replace()方法

替换是将分类术语转换为数字的方法之一。例如,我们将根据受教育程度获取人们的工资数据集。这是分类变量的序数类型。我们会将他们的教育水平转换为数字项。

考虑给定的数据:

数据

Python3
#import pandas
import pandas as pd
 
# read csv file
df = pd.read_csv('data.csv')
 
# replacing values
df['Education'].replace(['Under-Graduate', 'Diploma '],
                        [0, 1], inplace=True)


Python3
#import pandas
import pandas as pd
 
# read csv
df = pd.read_csv('salary.csv')
 
# get the dummies and store it in a variable
dummies = pd.get_dummies(df.Education)
 
# Concatenate the dummies to original dataframe
merged = pd.concat([df, dummies], axis='columns')
 
# drop the values
merged.drop(['Education', 'Under-Graduate'], axis='columns')
 
# print the dataframe
print(merged)


输出:

在上述程序中,我们将“本科”替换为 0,将“文凭”替换为 1。

方法 2:使用get_dummies()

替换值并不是转换它们的最有效方法。 Pandas 提供了一个名为get_dummies的方法,该方法将返回虚拟变量列。

逐步实施

第 1 步:创建虚拟列

调用 get_dummies() 方法并给出列的参数名称。此方法将返回虚拟变量列。在这种情况下,我们有 3 种类型的分类变量,所以它返回了三列

第 2 步:连接

下一步是将虚拟列连接到数据框中。在 pandas 中,有一个 concat() 方法,您可以调用该方法来连接两个数据框。您应该为它提供两个数据框的名称和轴。这将为您提供合并的数据框。

第 3 步:删除列

我们必须删除原始的“教育”列,因为我们有虚拟变量列,我们不需要文本列。我们也可能会删除其中一个虚拟变量列,这样我们就可以避免可能会弄乱模型的虚拟变量陷阱。删除列后,获得所需的数据帧

我们将在代码中实现它

Python3

#import pandas
import pandas as pd
 
# read csv
df = pd.read_csv('salary.csv')
 
# get the dummies and store it in a variable
dummies = pd.get_dummies(df.Education)
 
# Concatenate the dummies to original dataframe
merged = pd.concat([df, dummies], axis='columns')
 
# drop the values
merged.drop(['Education', 'Under-Graduate'], axis='columns')
 
# print the dataframe
print(merged)

输出: