如何在Pandas中把分类变量转换为数字变量
在这篇文章中,我们将学习如何通过使用pandas将分类变量转换为Numeric。
当我们看到分类数据时,任何人产生的第一个问题是如何处理这些数据,因为机器学习总是擅长处理数值。我们可以通过使用文本数据来制作机器学习模型。因此,为了制作预测模型,我们必须将分类数据转换成数字形式。
方法1:使用replace()方法
替换是将分类术语转换为数字的方法之一。例如,我们将采取一个基于教育水平的人们的工资的数据集。这是一个序数型的分类变量。我们将把他们的教育水平转换为数字项。
语法:
replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method=’pad’)
考虑一下给定的数据。
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)
输出:
在上述程序中,我们将 “本科 “替换为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种类型的分类变量,因此,它返回三列
第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()方法,你可以调用它来连接两个数据框。你应该向它提供两个数据框架的名称和轴。这将为你提供合并后的数据框架。
第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)
输出: