在下面的代码中,我试图替换mean而不是缺少的值,但我无法获得尝试的结果,因为此数据包含特殊字符,即“?”。当数据中没有问号时,此代码工作data.fillna(data.mean())
。当我尝试插补方法时,我得到以下错误:
ValueError: Cannot use mean strategy with non-numeric data: could not convert string to float:
此外,此数据还包括缺少值的字符串列,如何修复字符串列中缺少的值(例如,列rbc)
这是我的数据:https://easyupload.io/te2mbc
path = ("C:\\Users\\bbb\\Desktop\\ccc\\group5data.txt")
names = ["age","bp","sg","al","su","rbc","pc","pcc","ba",
"bgr","bu","sc","sod","pot","hemo","pcv","wc",
"rc","htn","dm","cad","appet","pe","ane","class"]
data = pd.read_csv(path, names=names)```
您的数据由数字列和非数字列组成,为了
fillna
,意味着您需要只选择数字列选择数字列
用平均值填充数字列
在“sod”和“pot”列中有“?”字符这一事实使熊猫成为一种动物 将这些列解析为字符串,因此即使
该列将同时具有(浮动)NAN和字符串,因此熊猫将无法 计算它的平均值()。我相信这就是造成你的价值观错误的原因
因此,请尝试将这些列转换为float(而不是int,因为np.nan是float):
现在,NAN已替换为每列的平均值(当然 列现在是float,而不是原来的int,但这应该很容易理解 修正)
相关问题 更多 >
编程相关推荐