如何在Python中把分类的字符串数据转换成数字

如何在Python中把分类的字符串数据转换成数字

这些数据集有数字和分类特征。分类特征指的是字符串数据类型,可以很容易被人类理解。然而,机器不能直接解释分类数据。因此,分类数据必须被转换为数字数据,以便进一步处理。

有许多方法可以将分类数据转换成数字数据。在这篇文章中,我们将讨论两种最常用的方法,即 。

  • 虚拟变量的编码
  • 标签编码

在这两种方法中,我们都使用了相同的数据,数据集的链接在这里

方法1:虚拟变量编码

我们将使用pandas.get_dummies函数将分类的字符串数据转换成数字。

语法:

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

参数 :

  • data: Pandas系列,或数据框架
  • prefix:字符串,字符串列表,或字符串的dict,默认为无。用于添加DataFrame列名的字符串
  • prefix_sep : str,默认为’_’。如果添加前缀,则使用分隔符/分界符。
  • dummy_na : bool, default False.增加一列来表示NaN,如果是False,NaN将被忽略。
  • columns:列表式,默认为无。要被编码的DataFrame中的列名。
  • sparse : bool, default False.假编码的列是否应该由SparseArray(True)或普通的NumPy数组(False)来支持。
  • drop_first : bool,默认为False。是否通过删除第一层来获得k-1个分类层次的假人。
  • dtype : dtype,默认为np.uint8。它指定了新列的数据类型。

返回: 数据框架

分步实现

第1步:导入库

# importing pandas as pd
import pandas as pd

第2步:导入数据

# importing data using .read_csv() function
df = pd.read_csv('data.csv')
 
# printing DataFrame
df

输出:

如何在Python中把分类的字符串数据转换成数字?

第3步:将分类数据列转换为数字

我们将把 “购买的 “列从分类数据类型转换为数字数据类型。

# using .get_dummies function to convert
# the categorical datatype to numerical
# and storing the returned dataFrame
# in a new variable df1
df1 = pd.get_dummies(df['Purchased'])
 
# using pd.concat to concatenate the dataframes
# df and df1 and storing the concatenated
# dataFrame in df.
df = pd.concat([df, df1], axis=1).reindex(df.index)
 
# removing the column 'Purchased' from df
# as it is of no use now.
df.drop('Purchased', axis=1, inplace=True)
 
# printing df
df

输出:

如何在Python中把分类的字符串数据转换成数字?

方法2:标签编码

我们将使用sklearn库中的.LabelEncoder()来将分类数据转换为数字数据。在这个过程中,我们将使用函数fit_transform()。

语法 :

fit_transform(y)

Parameters :

  • y : 形状的数组一样(n_samples)。目标值。

返回 :类似数组的形状(n_samples).编码的标签。

分步实现

第1步:导入库

# importing pandas as pd
import pandas as pd

第2步:导入数据

#importing data using .read_csv() function
df = pd.read_csv('data.csv')
 
#printing DataFrame
df

输出:

如何在Python中把分类的字符串数据转换成数字?

第3步:将分类数据列转换为数字列

我们将把 “购买的 “列从分类数据类型转换为数字数据类型。

# Importing LabelEncoder from Sklearn
# library from preprocessing Module.
from sklearn.preprocessing import LabelEncoder
 
# Creating a instance of label Encoder.
le = LabelEncoder()
 
# Using .fit_transform function to fit label
# encoder and return encoded label
label = le.fit_transform(df['Purchased'])
 
# printing label
label

输出:

array([0, 1, 0, 0, 1, 1, 0, 1, 0, 1])

第4步:将标签阵列附加到我们的数据框架中

# removing the column 'Purchased' from df
# as it is of no use now.
df.drop("Purchased", axis=1, inplace=True)
 
# Appending the array to our dataFrame
# with column name 'Purchased'
df["Purchased"] = label
 
# printing Dataframe
df

输出:

如何在Python中把分类的字符串数据转换成数字?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程