在python中填充缺失值的标准方法是什么?

时间:2020-04-19 11:03:40

标签: python missing-data

我的数据集非常有限,其中包含缺少值的各种列。我不能修剪缺少值的行,因为它将大大减小大小。有人可以建议这样做的标准程序吗?

3 个答案:

答案 0 :(得分:1)

要填充缺少的值,可以执行下列操作之一: 1)使用可用值计算特征的均值,然后用均值填充缺失值。如果值是离散的(分类的),则使用最频繁的值(模式)来填充缺失的值。 2)找出与缺少值的示例最相似的示例,因为这些示例具有特定功能的值。然后使用您感兴趣的特征的均值/众数来填充缺失值。

答案 1 :(得分:0)

您所描述的称为imputation,并且有许多有趣的方法可以处理这种情况。对于数字变量,您可以使用特征的均值或众数填充缺失值。对于分类变量,您可以将缺失值本身设置为一个类别,或者简单地将其替换为最常见的类别。确实没有一种正确的方法。有时人们会使用数据不丢失的案例来尝试预测丢失案例的值!

特别是在Python中,Scikit-learn有一些不错的方法旨在帮助解决herehere

值得一提的是,这些方法的范围从非常简单到非常复杂,您都必须确定哪种方法最适合您的情况。在复杂度更高的一端,您可以通过多种方法来构建“数据丢失”过程的统计模型,然后在这种“最可能”模型的情况下找到丢失数据的“最可能”基础值。 This可能会给您带来味道。我认为这通常太矫kill过正了!

答案 2 :(得分:0)

如果只需要占位符,有几种处理方法。我更喜欢 来自收藏模块的defaultdict。

from collections import defaultdict

dict = {1:'one',2:'two',3:'three',4:'four'}
dict2=defaultdict(int)
# defaultdict(<class 'int'>, {})
dict2.update(dict)
# defaultdict(<class 'int'>, {1: 'one', 2: 'two', 3: 'three', 4: 'four'})
dict[5]
# 0
dict2
# defaultdict(<class 'int'>, {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 0})

否则,您可以使用构造函数或任何其他占位符。