使用Python在Dataframe中丢失数据

时间:2017-09-12 10:06:48

标签: python scikit-learn data-science imputation

[Dataframe]

嗨,

附上数据,请你帮我处理“Outlet_Size”列中缺少的数据。 这样我就可以使用这些完整的数据来准备数据科学模型。

谢谢,

3 个答案:

答案 0 :(得分:3)

这些是数据挖掘问题(或机器学习)的主要挑战之一。您根据PURE EXPERIENCE决定如何处理缺失的数据。你不能把数据科学视为一个黑盒子,它遵循一系列成功的步骤!

有关缺失数据的一些指导原则。

一个。如果列中缺少超过40%的数据,请删除它! (同样,40%取决于您正在使用的问题类型!如果数据非常关键或非常简单,您可以忽略它。)

B中。检查是否有可能从互联网上输入丢失的数据。你正在看项目重量!无论如何,你可以知道你正在处理的是哪种产品而不是哈希编码Item_Identifier,那么你总是可以直接使用谷歌来解决它。

℃。缺失的数据可分为两种类型:

MCAR:随意丢失。在缺少数据的情况下,这是理想的情况。

MNAR:不是随意丢失。丢失不是随机数据是一个更严重的问题,在这种情况下,进一步检查数据收集过程并尝试理解信息丢失的原因可能是明智的。例如,如果调查中的大多数人没有回答某个问题,他们为什么这样做呢?问题不清楚吗? 假设数据是MCAR,那么过多的数据丢失也是一个问题。通常,安全最大阈值是大数据集总数的5%。如果某个特征或样本的缺失数据超过5%,那么您可能应该保留该特征或样本。因此,我们使用简单的函数检查缺少5%以上数据的特征(列)和样本(行)

d。如评论中所述,您只需使用df.dropna()删除行或使用无穷大填充行,或使用df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))填充它们 这会按类别value对数据框df中的列name进行分组,找到每个类别中的平均值,并使用该类别的相应平均值填充value中的缺失值!< / p>

电子。除了丢弃缺失值,用平均值或中位数替换之外,还有其他一些先进的回归技术可以用来预测缺失值并填充它,EG(鼠标:链式方程的多变量插补),你应该浏览和阅读更多有关高级插补技术有用的信息。

答案 1 :(得分:0)

“Outlet_Size”列包含分类数据,因此不要删除数据,而是使用度量来填充数据。

由于是分类数据,因此使用中心趋势、模式度量。 使用模式查找哪个类别出现的次数更多或频率更高,并用相应的值填充该列。

代码:

Dataframe['Outlet_Size'].mode()
Datarame['Outlet_Size'].fillna(Dataframe['Outlet_Size'].mode(), inplace=True)

答案 2 :(得分:0)

接受的答案非常好。

在您的具体情况下,我会说要么删除该列,要么分配一个名为 Missing 的新值。由于这是一个分类变量,它很有可能最终进入 OneHot 或目标编码器(或者模型可以直接将其理解为一个类别)。此外,值是 NaN 的事实本身就是一个信息,它可能来自多种因素(从错误的数据到获得答案的技术困难等)。小心并注意这不会带来偏见或一些您不应该知道的信息(例如:产品由于未进入某个基数而具有 NaN,在真实情况下永远不会发生的事情,这将使您的结果非-代表真实情况)