栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python使用pandas填补缺失值——众数填充失败:

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python使用pandas填补缺失值——众数填充失败:

python使用pandas填补缺失值——众数填充失败:

提示:这里简述项目相关背景:
在对不同类型的缺失值分别填充时,可能需要不同的填充方式,例如对于连续数值型的可能需要使用均值填充,对于非数值型的数据也许使用众数填充更合适。


问题描述

提示:这里描述项目中遇到的问题:

在进行众数填充时,按照教程书写时遇到了的问题,无论如何也填充不进去。
先看原代码:

#数值型数据使用均值填充
train[numerical_fea] = train[numerical_fea].fillna(train[numerical_fea].median())
#非数值型数据使用众数填充
train[category_fea] = train[category_fea].fillna(train_data[category_fea].mode())

原因分析:

分析数据类型

这里输出一下数据类型看看:
发现前者median()的输出是series类型,而后者mode()的输出是dataframe类型,也许这是造成无法直接加入的元凶。

print(type(train[numerical_fea].median()))
print(type(train[category_fea].mode()))

解决方案:

将dataframe转化成series

可以先将dataframe打印出来,看看众数是否都只有一个,在本项目中是的,只需要取出df中的第一行就能得到series了。

train[category_fea] = train[category_fea].fillna(train[category_fea].mode().iloc[0,:])

之前更多教程的写法也无法奏效,贴在这里:
很多人的教程这样写,不确定是什么原因,但是我的执行时会出现错误。

train[category_fea] = train[category_fea].fillna(train[category_fea].mode()[0])

同时,直接添加数值的时候,可能需要使用inplace参数,如下:
我是没有遇到这种情况啦——

train[numerical_fea] = train[numerical_fea].fillna(0,inplace = True)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858805.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号