在数据科学领域,数据清洗是获取有价值信息前必须进行的关键步骤。如果数据未经彻底清洗,模型的准确性将大打折扣。低质量的数据会导致结果偏差,准确度低,错误率高。因此,在对数据进行模型拟合之前,彻底清洗数据至关重要。作为数据科学家,需要明白,并非所有提供给数据都是有用的,必须知道如何处理这些数据。
数据清洗包括删除空记录、删除不必要的列、处理缺失值、纠正错误值或异常值、重构数据以使其更易于阅读等。数据清洗的一个常见例子是其在数据仓库中的应用。数据仓库存储来自多个来源的各类数据,并在进行任何模型拟合之前对其进行优化分析。
数据清洗不仅仅是删除现有信息以添加新信息,而是找到一种方法,在不丢失现有信息的情况下最大化数据集的准确性。不同类型的数据需要不同类型的清洗,但请记住,正确的方法是决定性因素。清洗后的数据将与系统中的其他类似数据集保持一致。
如果在特定行中缺失了大量数据,那么最好删除该行,因为它不会为模型增加任何价值。可以对缺失的数据进行插值,为缺失的数据提供适当的替代值。同时,始终记得从数据集中删除重复/冗余的值,因为它们可能会导致模型偏差。
student_df.dropna()
# 删除包含1个或更多NaN值的行
# 输出
name
score
address
height
weight
A
56
Goa
165
56
B
45
Mumbai
3
65
C
87
Delhi
170
58
E
99
Mysore
167
60
当从利益相关者那里接收数据时,数据量通常很大。可能有很多数据对模型没有任何价值。这样的数据最好被移除,因为它会占用宝贵的资源,如内存和处理时间。
student_df.drop(['height','weight'], axis = 1,inplace=True)
# 从数据框中删除Height列
# 输出
name
score
address
A
56
Goa
B
45
Mumbai
C
87
Delhi
E
99
mysore
最好将列名重命名为最易读的格式,这样数据科学家和业务人员都能理解。例如,在学生数据集中,将“name”列重命名为“Student_Name”使其更有意义。
student_df.rename(columns={'name': 'Student_Name'}, inplace=True)
# 将name列重命名为Student_Name
# 输出
Student_Name
score
address
A
56
Goa
B
45
Mumbai
C
87
Delhi
E
99
Mysore
处理数据集中的缺失值有很多方法。这取决于数据科学家和手头的数据集选择最合适的方法。最常用的方法是用均值、中位数或众数来填充数据集。在某些情况下,删除那些有一个或多个值缺失的特定记录,有时还使用机器学习算法,如线性回归和K最近邻,来处理缺失值。
Student_df['col_name'].fillna((Student_df['col_name'].mean()), inplace=True)
# 用均值替换col_name中的NaN值
# 输出
Student_Name
score
address
A
96
Goa
B
45
Mumbai
C
66
Delhi
E
99
Mysore
异常值可以被视为数据集中的噪声。异常值的原因可能包括数据输入错误、人为错误、实验错误等。例如,在下面的例子中,学生“B”的分数输入为130,这显然是错误的。
Student_Name
score
address
height
weight
A
56
Goa
165
56
B
45
Mumbai
3
65
C
66
Delhi
170
58
E
99
Mysore
167
60