欢迎访问宙启技术站
智能推送

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,实现了对数据的清洗。这样就可以避免在后续分析和建模过程中出现异常值导致的问题。