机器学习:数据预处理–数据清洗

机器学习:数据预处理–数据清洗数据预处理数据清洗 空缺数据填充 数据清洗

大家好,欢迎来到IT知识分享网。

目录

一、数据清洗

1.数据清洗是什么

2.数据清洗步骤

3.数据清洗示例

二、数据清洗代码实现

1.完整代码

2.代码步骤解析

1.导入库和数据

2.检测有无缺失值

3.标签数字化

4.去除异常数据

5.标准化数据

总结


一、数据清洗

1.数据清洗是什么

        数据清洗是指在数据分析过程中,对原始数据进行处理和整理的过程,以提高数据的质量和可用性。是数据预处理里的一个关键步骤

 

2.数据清洗步骤

  1. 去除重复数据:识别并删除重复记录。
  2. 处理缺失值:填补缺失值或删除包含缺失值的记录。
  3. 统一数据格式:统一数据格式,如日期、时间或数值单位。
  4. 纠正数据错误:修正数据中的错误和不一致,如拼写错误或错误的分类。
  5. 处理异常值:检测和处理数据中的异常值或离群点。
  6. 数据一致性检查:确保数据在不同数据源或表之间的一致性。
  7. 数据转换:将数据转换成适合分析的格式,例如归一化、编码分类变量等。

 

3.数据清洗示例

  • 图片只截取了部分数据做演示
  • 原始数据机器学习:数据预处理--数据清洗
  • 经过数据清洗之后的数据机器学习:数据预处理--数据清洗
  • 可以看到缺失值都进行了填充,特殊符号进行了去除,数据进行了z标准化的转换

 

二、数据清洗代码实现

1.完整代码

import pandas as pd import fill_data data = pd.read_excel('矿物数据.xls') # 导入数据 data = data[data['矿物类型'] != 'E'] # 去除数据量很少的类别 null_num = data.isnull() # isnull() 会返回一个相同形状的DataFrame,但其中的元素是布尔值(True或False)。 # 如果原始DataFrame中的某个位置是缺失值(通常是NaN,即"Not aNumber”), # 则对应位置在返回的DataFrame中会被标记为True;否则,标记为False。 # 注:还有空白处也是nan,isnull未包含空自处。 null_total = null_num.sum() # 检测每一列的缺失值个数 x_whole = data.iloc[:, 1:-1] # 取出特征数据 y_whole = data['矿物类型'] # 取出标签数据 # 将数据中的中文标签转换为字符 label_dict = {"A": 0, "B": 1, "C": 2, "D": 3} encode_labels = [label_dict[label] for label in y_whole] # 将y_whole中的字母转换成数字并储存在列表里 y_whole = pd.Series(encode_labels, name='矿物类型') # 将原本的y_whole替换成encode_labels # 数据中存在大量字符串数值、|、空格等异常数据。字符串数值直接转换为float,\和空格转换为nan for column_name in x_whole.columns: x_whole[column_name] = pd.to_numeric(x_whole[column_name], errors='coerce') # pd.to_numeric()函数尝试将参数中的数据转换为数值类型。如果转换失败,它会引发一个异常 # 设置errors='coerce',会将无法转换的值设置为NaN """-----------------数据标准化: Z标准化-------------""" from sklearn.preprocessing import StandardScaler std = StandardScaler() x_whole_z = std.fit_transform(x_whole) # 转换之后储存在矩阵里 x_whole = pd.DataFrame(x_whole_z, columns=x_whole.columns) # z标准化处理后为numpy数据,这里再转换成pandas数据 

 

2.代码步骤解析

1.导入库和数据

初步去除异常数据:

在这份数据里,分类为E的数据只有一条,无法使用,直接去除

import pandas as pd import fill_data data = pd.read_excel('矿物数据.xls') # 导入数据 data = data[data['矿物类型'] != 'E'] # 去除数据量很少的类别

 

2.检测有无缺失值

null_num = data.isnull() # isnull() 会返回一个相同形状的DataFrame,但其中的元素是布尔值(True或False)。 # 如果原始DataFrame中的某个位置是缺失值(通常是NaN,即"Not aNumber”), # 则对应位置在返回的DataFrame中会被标记为True;否则,标记为False。 # 注:还有空白处也是nan,isnull未包含空自处。 null_total = null_num.sum() # 检测每一列的缺失值个数

输出:

将数据的列名和该列有多少失值存入Series类型数据

机器学习:数据预处理--数据清洗

 

3.标签数字化

  • 取出特征数据和标签数据
  • 将标签数据中的字母转换成数字
x_whole = data.iloc[:, 1:-1] # 取出特征数据 y_whole = data['矿物类型'] # 取出标签数据 # 将数据中的中文标签转换为字符 label_dict = {"A": 0, "B": 1, "C": 2, "D": 3} encode_labels = [label_dict[label] for label in y_whole] # 将y_whole中的字母转换成数字并储存在列表里 y_whole = pd.Series(encode_labels, name='矿物类型') # 将原本的y_whole替换成encode_labels 

 

4.去除异常数据

  • 将字符串类型数据转换成数值类型
  • 特殊符号或者空格转换成nan
# 数据中存在大量字符串数值、|、空格等异常数据。字符串数值直接转换为float,\和空格转换为nan for column_name in x_whole.columns: x_whole[column_name] = pd.to_numeric(x_whole[column_name], errors='coerce') # pd.to_numeric()函数尝试将参数中的数据转换为数值类型。如果转换失败,它会引发一个异常 # 设置errors='coerce',会将无法转换的值设置为NaN

输出:

机器学习:数据预处理--数据清洗

 

5.标准化数据

  • 将数据进行z标准化
  • 得到的结果是矩阵
  • 将其转换成DF表格数据
"""-----------------数据标准化: Z标准化-------------""" from sklearn.preprocessing import StandardScaler std = StandardScaler() x_whole_z = std.fit_transform(x_whole) # 得到的结果是矩阵 x_whole = pd.DataFrame(x_whole_z, columns=x_whole.columns) # z标准化处理后为numpy数据,这里再转换成pandas数据

输出:

机器学习:数据预处理--数据清洗

 

总结

至此数据清洗已经完成了大部分,剩下缺失值填充的几种方法将在下一篇进行介绍

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121829.html

(0)
上一篇 2025-10-21 12:15
下一篇 2025-10-21 12:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信