当前位置:编程学堂 > 八步学会使用Pandas进行数据清洗

八步学会使用Pandas进行数据清洗

  • 发布:2023-09-29 06:32

简介

如果您对数据科学感兴趣,那么数据清洗可能是您熟悉的术语。如果你不熟悉的话,本文先来解释一下。我们的数据通常来自多个来源并且并不干净。它可能包含缺失值、重复值、错误或不需要的格式等。对此类混乱的数据运行实验可能会导致错误的结果。因此,有必要在将数据输入模型之前准备好数据。这种通过识别和解决潜在错误、不准确和不一致来准备数据的做法称为数据清理。

在本教程中,我们将向您介绍使用 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 文件的第一行包含列名称(标题)。

2。探索数据集

为了深入了解数据集的基本信息,本文将利用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 个类别的公平评估和比较提供了基础。

4。删除缺失值

由于从info()方法中可以明显看出本文的数据中有5列没有缺失值,因此本文将跳过这一步。但如果遇到任何缺失值,可以使用以下命令处理它们:

iris_data.dropna(inplace=True)

5。删除重复值

重复值可能会扭曲我们的分析结果,因此本文将从数据集中删除它们。首先使用以下命令检查是否有重复值:

duplicate_rows = iris_data.duplicate()
print("重复行数:",duplicate_rows.sum())

输出:

重复行数:0

本文数据集中没有重复值。但是,如果有重复值,可以使用 drop_duplicates() 函数删除它们:

iris_data.drop_duplicates(inplace=True)

6。 One-hot 编码

为了分类分析,本文将对品种列进行 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])

相关文章

热门推荐