python - 如何使用数据框在函数中编写 sklearn.SimpleImputer?
问题描述
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='most_frequent')
df_titanic['age'] = imputer.fit_transform(df_titanic[['age']])
df_titanic['age']
我想把它写在一个函数中以使其可重用。我尝试了几种方法,但都给出了错误。
def simple_imputer_func(data,strategy):
simple_imputer = impute.SimpleImputer(strategy=strategy)
X_num = simple_imputer.fit_transform(data)
return X_num
X_num = np.array(simple_imputer_func(df_titanic['age'],'most_frequent'))
这也给出了错误
def imputer_func(data, imputer, strategy):
simple_imputer = impute.imputer(strategy=strategy)
X_num = simple_imputer.fit_transform(data)
return X_num
X_num = np.array(simple_imputer_func(df_titanic['age'], SimpleImputer, 'most_frequent'))
有没有办法可以将它们写在一个函数中,然后给函数命名为 imputer 选择哪个?
解决方案
我的猜测是,当你df_titanic['age']
作为参数传递给你的函数时,它就是一个pandas.Series
对象。你想要一个pandas.DataFrame
.
在原始代码中,您使用的是df_titanic[['age']]
,它提供了从 Dataframe 中选择的单列(年龄)的列表。这将返回pandas.DataFrame
仅包含年龄列的 a,而不是pandas.Series
包含列中的值的 a。
推荐阅读
- c# - 我的下拉列表未显示在我的网页中
- reactjs - 反应路由器如何禁用标签的默认行为?
- python-3.x - boto3.resources.factory 上的属性查找 s3.ServiceResource 失败
- amazon-web-services - S3 仅对一个 IAM 用户的访问
- excel - Excel IF 规则。如果应用于公式的单元格通过测试,我可以输入活单元格的值吗?
- logging - Airflow KubernetesExecutor,在执行程序 pod 完成之前,日志不会显示在 UI 中
- swift - 确定用户是否有资格通过 Mac App 上的本地收据验证免费试用的正确方法是什么?
- api - jAgent 是否支持 https 端点?
- git - 为什么在我做了'checkout master'之后,我在新分支中所做的更改会显示在master中?
- html - 为什么我的 H1 标题子级会覆盖我的 div 父级维度?为什么我不能正确操作 h1?