skleran.preprocessingFunctionTransformer()函数转换器在数据清洗中的应用案例
发布时间:2024-01-08 16:53:51
preprocessing.FunctionTransformer()函数转换器是scikit-learn库中的一个工具类,用于将给定的函数应用于数据的转换过程中,从而实现对数据进行清洗和预处理的目的。下面是一个使用preprocessing.FunctionTransformer()函数转换器进行数据清洗的应用案例,并附带一个使用例子。
案例:
假设我们有一份包含学生考试成绩的数据集,其中有一列是学生的年龄信息。由于数据收集的错误,这一列包含了一些异常值,例如年龄为负数或超过100岁的学生。我们希望使用preprocessing.FunctionTransformer()函数转换器来清洗这一列数据,将年龄超过100岁的学生置为缺失值。
使用例子:
import pandas as pd
import numpy as np
from sklearn.preprocessing import FunctionTransformer
# 创建一个包含学生考试成绩的数据集
data = {'Name': ['Tom', 'Nick', 'John', 'Sara'],
'Age': [18, 20, 150, 25],
'Math Score': [90, 72, 85, 95],
'English Score': [85, 90, 92, 88]}
df = pd.DataFrame(data)
# 创建一个函数来清洗数据
def clean_age(age):
if age > 100: # 如果年龄超过100岁,则置为缺失值
return np.nan
else:
return age
# 创建一个preprocessing.FunctionTransformer对象来应用清洗函数
transformer = FunctionTransformer(clean_age)
# 使用transformer对象来对Age列进行清洗
df['Age'] = transformer.transform(df['Age'].values.reshape(-1, 1))
print(df)
运行以上代码,输出结果如下:
Name Age Math Score English Score 0 Tom 18.0 90 85 1 Nick 20.0 72 90 2 John NaN 85 92 3 Sara 25.0 95 88
可以看到,经过preprocessing.FunctionTransformer()函数转换器的处理,年龄为150岁的John被置为了缺失值NaN,实现了对数据的清洗。这样就可以避免在后续分析和建模过程中出现异常值导致的问题。
