使用 Python 的 Dataframe 中缺少数据

Missing data in Dataframe using Python

[]

嗨,

附上数据,请您帮我处理"Outlet_Size"栏中缺失的数据。 这样我就可以使用这个完整的数据来准备数据科学模型。

谢谢,

这些是数据挖掘问题(或机器学习)的主要挑战之一。您根据纯粹的经验决定如何处理丢失的数据。您不能将数据科学视为遵循一系列步骤才能成功的黑匣子!

关于缺失数据的一些准则。

一个。如果某列中超过 40% 的数据丢失,请将其删除! (同样,40% 取决于您正在处理的问题类型!如果数据非常重要或非常微不足道,您可以忽略它)。

乙。检查是否可以通过某种方式从互联网上估算丢失的数据。您正在查看物品重量!如果无论如何你可以知道你正在处理的是哪种产品而不是散列编码Item_Identifier,那么你总是可以从字面上Google它并弄清楚。

C。缺失数据可分为两类:

MCAR:完全随机丢失。这是丢失数据时的理想方案。

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

检查缺失超过 5% 数据的特征(列)和样本(行)

D.如评论中所述,您可以简单地使用 df.dropna() 删除行或用无穷大填充它们,或者使用 df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean())) 用均值填充它们 这将数据框 df 中的列 value 按类别 name 分组,找到每个类别的平均值并用该类别的相应平均值填充 value 中的缺失值!

E.除了删除缺失值,用均值或中位数替换之外,您还可以使用其他高级回归技术来预测缺失值并填充它,例如,E.G(小鼠:通过链式方程进行多元插补),您应该浏览并详细了解高级插补技术在哪些方面会有所帮助。

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

由于是分类数据,所以使用集中趋势度量、众数。 使用模式查找哪个类别出现得更多或更频繁,并用相应的值填充该列。

代码:

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

采纳的回答真不错

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