前言
数据清洗是数据治理过程中非常重要的一环,它指的是对数据进行清理、筛选、去重、格式化等操作,以确保数据质量和数据准确性。。在本文中,我们将围绕数据清洗展开讨论,并介绍一些数据清洗相关技术。
一、数据清洗
1、数据清洗的概念
- 数据清洗是指对数据进行处理和加工,以使其适合进行分析和建模。数据清洗包括去除重复数据、填补缺失值、处理异常值和转换数据格式等操作,以提高数据的准确性和可靠性。数据清洗通常是数据处理过程的一个必要步骤,它可以消除数据错误和噪声,并提高分析和建模的精度。
2、数据清洗的技术
以下是一些常见的数据清洗技术:
-
数据去重:去除数据集中的重复记录。这可以通过比较记录中的唯一标识符或关键字段来实现。
-
缺失值处理:填补数据集中的缺失值。这可以使用插值、平均值、中位数、众数等方法进行处理。
-
异常值处理:检测和处理数据集中的异常值。异常值可以被删除或替换为可接受的值。
-
数据标准化:将数据格式标准化为一致的格式,以便于处理和分析。例如,可以将日期格式标准化为ISO格式。
-
数据转换:数据转换实质上是将数据的格式进行转换,其目的主要是为了便于处理和分析数据。例如,将文本格式的日期转换为日期格式。
-
数据验证:确保数据集中的数据准确性和完整性。例如,可以验证邮件地址是否符合标准格式,或验证电话号码是否正确。
二、示例
1、原始数据
- 图片只截取了部分数据做演示
2.读入数据
- 数据清洗之后的数据
缺失值都进行了填充,特殊符号进行了去除,数据进行了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数据
总结
总之,数据清洗是数据治理不可或缺的一环,它对于数据质量和准确性有着至关重要的影响。在实践中,数据清洗需要根据具体的数据集和业务需求进行调整和优化,以满足不同的数据处理和分析要求。因此,数据清洗需要进行不断的优化和改进,以适应不断变化的数据和业务环境。