我有一个看起来像这样的数据框:
ID Age Sex Loc
1 1 33 F S
2 2 64 M C
3 3 49 M C
4 4 M S
5 5 31 F U
还有其他列,但这足以解决问题。我将其用作神经网络的输入。我的问题是缺少年龄值。其他列具有所有数据,但整个数据集(培训和测试)中大约缺少5%的年龄值。我可以轻松地跳过那些行,但是当我想将测试集中的ID号与预测相关联时,这会导致问题,因为索引不再匹配。那么,如何清理该列,使其仍然可以在NN中运行而不会弄乱我的结果呢?我应该只假设所有容器的总数的平均值吗?
在我循环遍历并将M / F转换为1/0并将Loc转换为0/1/2时跳过了行。我的网络准确率达到了81%。我只是想知道是否可以找到一种方法来保留这些行,使其更准确,而当我深入研究时,这似乎在现实世界的数据中经常会出现。
假设我是python的白痴,但是在javascript / angular / databases / etc方面拥有21年的webdev经验。 ;)感谢您对此的任何建议。
答案 0 :(得分:3)
这里没有当前答案,您基本上必须尝试看看有什么作用。
方法1: 像您建议的那样,您可以删除所有缺少值的行。
df.dropna(axis=0)
方法2: 用常量值填充它们,例如0。
df.fillna(0)
方法3: 用中位数或均值列值填充
df.fillna(df.mean())