处理丢失数据时出现问题,无法根据需要重现我的结果



我是python的新手。我在处理一些数据时遇到了一些缺失的数据。我想做的是用mean填充一些,用mode填充一些,同时删除一些列。

以下是我正在做的

missing_val_count = (train.isnull().sum())
print(missing_val_count[missing_val_count > 0])

Output:
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
dtype: int64

我有这么多列缺少数据。

train['MasVnrType'].fillna(train['MasVnrType'].replace('NA', None), inplace = True)
train['MasVnrArea'].fillna(train['MasVnrArea'].replace('NA', '0'), inplace = True)
features = ['LotFrontage', 'GarageYrBlt']
for i in features:
train[i].fillna(train[i].mean(), inplace = True)
features1 = ['Electrical', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond']
for i in features1:
train[i].fillna(train[i].mode()[0], inplace = True)
train = train.drop(columns = ['Alley'])
missing_val_count = (train.isnull().sum())
print(missing_val_count[missing_val_count > 0])

当我运行此代码时,我得到

MasVnrType         8
MasVnrArea         8
dtype: int64

我无法处理这两个专栏。我做错了什么或者我错过了什么?

改为使用这个:

train['MasVnrType'].replace('NA', None, inplace=True)
train['MasVnrArea'].replace('NA', '0', inplace=True)
features = ['LotFrontage', 'GarageYrBlt']
train[features] = train[features].fillna(train[features].mean())
features1 = ['Electrical', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond']
train[features1] = train[features1].fillna(train[features1].mode())

values = train[features].mean().to_dict()
train.fillna(values, inplace=True)

示例:

df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [10, 20, np.nan], 'C': [100, 200, 'NA']}) 
df['C'].replace('NA', 0, inplace=True)

输出

A     B    C
0  1.0  10.0  100
1  NaN  20.0  200
2  3.0   NaN    0

另一个:

features = ['A', 'B']   
value = df[features].mean().to_dict()
df.fillna(value, inplace=True) 

输出

A     B    C
0  1.0  10.0  100
1  2.0  20.0  200
2  3.0  15.0    0

相关内容

最新更新