如果您对数据科学感兴趣,那么数据清洗可能是您熟悉的术语。如果你不熟悉的话,本文先来解释一下。我们的数据通常来自多个来源并且并不干净。它可能包含缺失值、重复值、错误或不需要的格式等。对此类混乱的数据运行实验可能会导致错误的结果。因此,有必要在将数据输入模型之前准备好数据。这种通过识别和解决潜在错误、不准确和不一致来准备数据的做法称为数据清理。
在本教程中,我们将向您介绍使用 Pandas 进行数据清理的过程。
本文将使用著名的鸢尾花数据集进行操作。虹膜数据集包含三种虹膜的四个特征测量值:萼片长度、萼片宽度、花瓣长度和花瓣宽度。本文将使用以下库:
? read_csv() 函数加载虹膜数据集:column_names = ['id', 'sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species']
iris_data = www.sychzs.cn_csv('data/Iris.csv', 名称=column_names, header=0)
iris_data.head()
输出:
id | 萼片长度 | 萼片宽度 | 花瓣长度 | 花瓣宽度 | 种类 |
1 | 5.1 | 3.5 | 1.4 | 0.2 | 山鸢尾 |
2 | 4.9 | 3.0 | 1.4 | 0.2 | 山鸢尾 |
3 | 4.7 | 3.2 | 1.3 | 0.2 | 山鸢尾 |
4 | 4.6 | 3.1 | 1.5 | 0.2 | 山鸢尾 |
5 | 5.0 | 3.6 | 1.4 | 0.2 | 山鸢尾 |
参数 header=0 表示 CSV 文件的第一行包含列名称(标题)。
为了深入了解数据集的基本信息,本文将利用pandas内置的函数打印一些基本信息:
打印(iris_www.sychzs.cn())
print(iris_data.describe())
输出:
范围索引:150 个条目,0 到 149
数据列(共6列):
# 列名非空计数类型
--- ------ -------------- -----
0 id 150 非空 int64
1 sepal_length 150 非空 float64
2 sepal_width 150 非空 float64
3 petal_length 150 非空 float64
4 petal_width 150 非空 float64
5 种 150 个非空对象
数据类型:float64(4)、int64(1)、object(1)
内存使用量:7.2+ KB
无
山鸢尾 50杂色鸢尾 50 弗吉尼亚鸢尾 50 Name:species,dtype:int64
输出结果表明数据集是平衡的,每个物种的代表数量相等。这为所有 3 个类别的公平评估和比较提供了基础。
由于从info()方法中可以明显看出本文的数据中有5列没有缺失值,因此本文将跳过这一步。但如果遇到任何缺失值,可以使用以下命令处理它们:
iris_data.dropna(inplace=True)
重复值可能会扭曲我们的分析结果,因此本文将从数据集中删除它们。首先使用以下命令检查是否有重复值:
duplicate_rows = iris_data.duplicate()
print("重复行数:",duplicate_rows.sum())
输出:
重复行数:0
本文数据集中没有重复值。但是,如果有重复值,可以使用 drop_duplicates() 函数删除它们:
iris_data.drop_duplicates(inplace=True)
为了分类分析,本文将对品种列进行 One-hot 编码。由于机器学习算法更适合处理数值数据,因此本文执行 one-hot 编码步骤。 one-hot 编码过程将分类变量转换为二进制(0 或 1)格式。
encoded_species = pd.get_dummies(iris_data['species'], prefix='species', drop_first=False).astype('int')
iris_data = pd.concat([iris_data, 编码种类], axis=1)iris_data.drop(列=['物种'],就地=True)
从 sklearn.preprocessing 导入 StandardScaler 定标器=标准定标器() cols_to_normalize = ['萼片长度', '萼片宽度', '花瓣长度', '花瓣宽度'] 缩放数据 = 缩放器.fit(iris_data[cols_to_normalize]) iris_data[cols_to_normalize] = scaler.transform(iris_data[cols_to_normalize])