python - 如何填写数据集中缺少 20% 的列?
问题描述
数据集中有一列缺失 54%。17031 此列中缺少数据。我没有删除它,因为这个专栏对我很重要。我用knn填充它。但是因为它的邻居也是nan值,所以有些行还是用nan填充的。我改变了邻居的数量 3,我尝试了 4 和 5,但结果是一样的。12116行仍然是nan。你建议我擦柱子,你还有其他推荐的方法吗?
from sklearn.impute import KNNImputer
df_n = df[["Credit_Score","Annual_Income"]]
var_names = df_n.columns
n_df = np.array(df_n)
imputer = KNNImputer(n_neighbors=3)
new_data = imputer.fit_transform(n_df)
df2=pd.DataFrame(new_data, columns=var_names)
for s in ["Credit_Score","Annual_Income"]:
df[[s]] = df2[s]
解决方案
您可以使用 sklearn 的 SimpleImputer ( link ),它可以使用与列相关的均值、中值或其他常量来填充缺失值。这是一种比 KNN 更简单的插补策略,但它确实确保插补后没有 nan。
推荐阅读
- python - 我在 python 文件操作期间得到错误文件名未定义。如何在 for 语句之前定义它
- c# - 在 LINQ 的动态表达式和查询中使用 DefaultIfEmpty
- odata - 如何在 OData 中的 hasdynamicproperty 函数中传递 lambda 表达式?
- r - 包含时移时润滑 ymd_hms() 奇怪的输出
- c# - WithArgumentsForConstructor 与 A
.那个.包含 - c# - 将身份验证系统添加到现有的 ASP.NET MVC / C# 项目
- firebase - Firebase 服务“错误:找不到模块 './src/index'”
- html - 锚链接滚动到溢出隐藏的溢出内容
- javascript - 打开 Chrome 选项卡后,如何将侦听器添加到该选项卡
- java - Java中的生命游戏GUI - 表达式总是错误的