如何在Pandas中把分类变量转换为数字变量

如何在Pandas中把分类变量转换为数字变量

在这篇文章中,我们将学习如何通过使用pandas将分类变量转换为Numeric。

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

方法1:使用replace()方法

替换是将分类术语转换为数字的方法之一。例如,我们将采取一个基于教育水平的人们的工资的数据集。这是一个序数型的分类变量。我们将把他们的教育水平转换为数字项。

语法:

replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method=’pad’)

考虑一下给定的数据。

如何在Pandas中把分类变量转换为数字变量?

Data

#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)

输出:

如何在Pandas中把分类变量转换为数字变量?

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

方法2:使用 get_dummies()

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

语法: pandas.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

分步实现

第1步:创建假人列

get_dummies()方法被调用,并给出了列的参数名称。这个方法将返回虚拟变量列。在本例中,我们有3种类型的分类变量,因此,它返回三列

如何在Pandas中把分类变量转换为数字变量?

第2步:串联

语法: pandas.concat(objs, axis=0, join=’outer’, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

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

如何在Pandas中把分类变量转换为数字变量?

第3步:落柱

我们必须放弃原来的 “教育 “列,因为我们有虚拟变量列,我们不需要文本列。我们也可以放弃其中的一个虚拟变量列,这样我们就可以避免虚拟变量陷阱,因为它可能会扰乱模型。在删除这些列后,我们得到了所需的数据框架

我们将在代码中实现这一点

#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)

输出:

如何在Pandas中把分类变量转换为数字变量?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程