如何处理数据科学中的缺失值

处理 DS 项目中缺失值的三种实用方法 — 在处理真实数据时,您可能经常会在数据框中发现缺失值。发生这种情况可能有几个原因,例如:某些测量可能会丢失缺少信息记录错误所以问题是:如何处理丢失的数据?我们可以接受 0 作为值吗?

如何处理数据科学中的缺失值

处理 DS 项目中缺失值的三种实用方法

如何处理数据科学中的缺失值

在处理现实世界的数据时,您可能经常会在数据框中发现缺失值。这可能有几个原因,例如:

  • 一些测量可能会丢失
  • lack of information
  • transcript errors

所以问题是:如何处理丢失的数据?我们可以接受 0 作为缺失数据的值吗?我们可以删除缺少数据的行吗?

在本文中,我将向您展示处理缺失数据的三种方法,并回答这些问题。

1. Ask questions

当您在数据集中发现缺失值时,您要做的第一件事就是提出问题,因为通过提出问题,您将理解问题;理解问题是数据科学项目最重要的任务:如果我们不理解问题,我们就无法提供价值。

如果有人向您提供了数据,请向他们提问,例如:

  • 你从哪里得到数据的?
  • 为什么会有缺失值?
  • 这些特征是什么意思?我可以接受 0 作为这些缺失数据的值吗?

如果您自己获得数据,请问自己同样的问题。

此外,谷歌很多。搜索您拥有的缺失数据的参考值,并尝试了解您可以为缺失数据赋予哪个值(记住:即使 0 也是一个值!!)。

此外,如果可以,请尝试联系该领域的专家。例如,如果您正在处理医疗数据集,请联系医生(也许是您的医生!)并询问有关您拥有的数据的问题,尤其是有关您丢失的数据的问题。

2. Dropping rows/columns

在某些情况下,我们可以删除缺失值或 Nans 的列或行(Nan=Not a Number;它甚至可以是“未测量”或“缺失”之类的字符串)。

如前所述,我们必须确保我们在删除这些列/行方面做得很好。例如,在我做的这个项目中,我发现了一些缺失值并决定删除这些行。[0]

让我们分析一下这个案例:这些数据与世界上所有国家的粮食生产年份有关。假设我们的数据框是“df”,这是我发现的:

df.isnull().sum()>>>   Area Abbreviation      0
Area Code 0
Area 0
Item Code 0
Item 0
...
Y2009 104
Y2010 104
Y2011 104
Y2012 0
Y2013 0
Length: 63, dtype: int64

对于 2009 年、2010 年和 2011 年,我们有 104 个空值;但此处列出的列并非都具有此数据框的空值;无论如何,如果我们看一下数据,我们可以看到,有些年,在一些国家,粮食生产的价值是 0 吨。这意味着一件简单的事情:无法记录数据,或者在那个特定国家的特定年份,无法生产特定的食物(或者在他们的历史上,他们根本没有在那个特定的国家生产过特定的食物!)。

通过这个简单的分析,我决定使用以下代码删除具有空值的行:

df = df.loc[(df.loc[:, 'Y1961':'Y2013']!=0).any(axis=1)]

3.用均值代替缺失值

有时值 0 根本不可接受,也许因为我们有少量数据,删除行/列不是一种选择。所以,我们能做些什么?一种可能性是将空值替换为同一行/列中其他值的平均值。

例如,在这个项目中,我分析了一个使用机器学习预测糖尿病的数据集。在这种情况下,很容易理解我们不能接受 0 作为 BMI(身体质量指数)或血压的值。由于数据很少,我无法删除任何行。所以,我用同一列中其他值的平均值填充了零;我用下面的代码做到了:[0]

#filling zeros with mean value
non_zero = ['Glucose','BloodPressure','SkinThickness','Insulin','BMI']
for coloumn in non_zero:
diab[coloumn] = diab[coloumn].replace(0,np.NaN)
mean = int(diab[coloumn].mean(skipna = True))
diab[coloumn] = diab[coloumn].replace(np.NaN, mean)
print(diab[coloumn])

这样,我用为其他 BMI 值等计算的平均值替换了 BMI 列中的零。

Conclusions

处理缺失值总是很困难,因为我们必须做出决定,并且在编写实际代码之前必须对这些决定进行深思熟虑。

所以,首先要多问问题和谷歌,试着深入理解问题和你要处理的数据。然后,决定如何处理您的缺失数据(例如,接受空值、删除列/行、用平均值替换缺失值或空值)。

让我们一起连接!

MEDIUM[0]

LINKEDIN(向我发送连接请求)[0]

如果你愿意,你可以订阅我的邮件列表,这样你就可以随时更新![0]

考虑成为会员:您可以免费支持我和像我这样的其他作家。点击此处成为会员。[0]

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2022年6月14日 下午12:39
下一篇 2022年6月14日 下午12:48

相关推荐