python - 在 Python 中输入缺失值
问题描述
我想使用 Scikit-Learn 在我的数据框中估算几列SimpleImputer
。我试过这样做,但没有运气。我应该如何修改我的代码?a
, b
,e
是我要估算的数据框中的列。
我的数据框:
a b c d e
NA 39 cat gray 20
5 NA dog brown NA
7 53 cat tan 33
NA NA cat black 41
4 24 dog tan NA
我的代码:
from sklearn.impute import SimpleImputer
miss_mean_imputer = SimpleImputer(missing_values='NaN', strategy='mean', axis=0)
miss_mean_imputer = miss_mean_imputer.fit(df["a", "b", "e"])
imputed_df = miss_mean_imputer.transform(df.values)
print(imputed_df)
解决方案
您应该在实例化 imputer 时替换missing_values='NaN'
为missing_values=np.nan
,并且还应该确保 imputer 用于转换已安装的相同数据,请参见下面的代码。
import pandas as pd
import numpy as np
from sklearn.impute import SimpleImputer
df = pd.DataFrame({
'a': [np.nan, 5.0, 7.0, np.nan, 4.0],
'b': [39.0, np.nan, 53.0, np.nan, 24.0],
'c': ['cat', 'dog', 'cat', 'cat', 'dog'],
'd': ['gray', 'brown', 'tan', 'black', 'tan'],
'e': [20.0, np.nan, 33.0, 41.0, np.nan]
})
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer = imputer.fit(df[['a', 'b', 'e']])
imputed_df = df.copy()
imputed_df[['a', 'b', 'e']] = imputer.transform(df[['a', 'b', 'e']])
print(imputed_df)
# a b c d e
# 0 5.333333 39.000000 cat gray 20.000000
# 1 5.000000 38.666667 dog brown 31.333333
# 2 7.000000 53.000000 cat tan 33.000000
# 3 5.333333 38.666667 cat black 41.000000
# 4 4.000000 24.000000 dog tan 31.333333
推荐阅读
- javascript - 从 JavaScript 中的文本解释/提取位置值 - NodeJS
- excel - Excel 2013 中的 VBA - 启动批处理文件
- javascript - 将 HTML 解析为来自异步调用的响应
- azure - Azure 帐户自动删除
- visual-studio-code - 在 Visual Studio Code 中配置展开选择以选择整个标识符
- python - 有时,对象是不可迭代的
- java - @ManyToOne and @OneToOne on the same entity
- bash - 如何使用bash在.txt文件中用零替换列中的值
- spring - 在 restfull api 参数或正文中约会?
- bash - Bash 脚本,从文件中获取值并按顺序将它们添加到另一个文件中