gpt4 book ai didi

Python - SkLearn Imputer 用法

转载 作者:太空狗 更新时间:2023-10-30 01:20:37 24 4
gpt4 key购买 nike

我有以下问题:我有一个 pandas 数据框,其中缺失值由字符串 na 标记。我想在其上运行一个 Imputer 以用列中的平均值替换缺失值。根据 sklearn 文档,参数 missing_values 应该可以帮助我解决这个问题:

missing_values : integer or “NaN”, optional (default=”NaN”) The placeholder for the missing values. All occurrences of missing_values will be imputed. For missing values encoded as np.nan, use the string value “NaN”.

在我的理解中,这意味着,如果我写

df = pd.read_csv(filename)
imp = Imputer(missing_values='na')
imp.fit_transform(df)

这意味着输入器用 na 值和列的平均值替换数据框中的任何内容。但是,相反,我收到一个错误:

ValueError: could not convert string to float: na

我误解了什么?这不是 imputer 应该如何工作的吗?那么,如何用平均值替换 na 字符串呢?我应该只使用 lambda 吗?

谢谢!

最佳答案

既然你说你想用列的平均值替换这些 'na',我猜非缺失值确实是 float 。问题是 pandas 无法将字符串 'na' 识别为缺失值,因此使用 dtype object 读取列而不是 float.

例如,考虑以下 .csv 文件:

 test.csv

col1,col2
1.0,1.0
2.0,2.0
3.0,3.0
na,4.0
5.0,5.0

通过简单的导入 df = pd.read_csv('test.csv')df.dtypes 告诉我们 col1 是dtype objectcol2 是 dtype float64。但是,如何取一堆对象的平均值呢?

解决方案是告诉 pd.read_csv() 将字符串 'na' 解释为缺失值:

df = pd.read_csv('test.csv', na_values='na')

生成的数据框包含两列 dtype float64,您现在可以使用输入器了。

关于Python - SkLearn Imputer 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com