如何在 Python 的 Pandas DataFrame 中填充 NaN 值?

数据挖掘 Python 数据清理 卡格尔
2021-10-07 18:24:39

我正在尝试通过尝试一些问题来学习数据分析和机器学习。

我发现了一个竞赛“房价”,它实际上是一个操场竞赛。由于我对这个领域很陌生,在探索数据后我感到困惑。数据有 81 列,其中 1 列是目标列,即房屋价值。此数据包含多个列,其中大多数值为“NaN”。当我跑的时候:

nulls = data.isnull().sum()
nulls[nulls > 0]

这显示了缺少值的列:

LotFrontage     259 
Alley           1369
MasVnrType      8   
MasVnrArea      8   
BsmtQual        37  
BsmtCond        37  
BsmtExposure    38  
BsmtFinType1    37  
BsmtFinType2    38  
Electrical      1   
FireplaceQu     690 
GarageType      81  
GarageYrBlt     81  
GarageFinish    81  
GarageQual      81  
GarageCond      81  
PoolQC          1453
Fence           1179
MiscFeature     1406

在这一点上,我完全迷失了,我不知道如何摆脱这些“NaN”值。
任何帮助,将不胜感激。

3个回答

您可以使用该DataFrame.fillna函数来填充NaN数据中的值。例如,假设您的数据位于名为 的 DataFrame 中df

df.fillna(0, inplace=True)

将用常量值替换缺失值0您还可以做更聪明的事情,例如用该列的平均值替换缺失值:

df.fillna(df.mean(), inplace=True)

或取一列的最后一个值:

df.fillna(method='ffill', inplace=True)

填充这些NaN值称为imputation尝试一系列不同的插补方法,看看哪些最适合您的数据。

  # Taking care of missing data
  from sklearn.preprocessing import Imputer
  imputer = Imputer(missing_values = 'NaN', strategy = 'mean', axis = 0)
  imputer = imputer.fit(X[:, 1:3])
  X[:, 1:3] = imputer.transform(X[:, 1:3])

假设我的数组的名称是X我想处理索引列中丢失的数据12通过用平均值替换它。Imputer 是一个很棒的类,可以从 sklearn 库中做到这一点

虽然 Tim Earhart 已经提供了答案,但我想在这里补充一下,在某些情况下,与其使用choosing df.mean()代替您的 NA 值,不如选择df.median()- 它计算您的中值。

平均值因考虑到异常值而臭名昭著。

由于您是初学者,因此您可能想尝试两者。