Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理丢失数据时出现问题,can';I don’我不能按要求复制我的结果_Python_Python 3.x_Pandas - Fatal编程技术网

Python 处理丢失数据时出现问题,can';I don’我不能按要求复制我的结果

Python 处理丢失数据时出现问题,can';I don’我不能按要求复制我的结果,python,python-3.x,pandas,Python,Python 3.x,Pandas,我是python新手。我在处理一些数据时遇到了一些丢失的数据。我想做的是用mean填充其中一些,用mode填充其中一些,同时删除一些列 这就是我要做的 missing_val_count = (train.isnull().sum()) print(missing_val_count[missing_val_count > 0]) Output: LotFrontage 259 Alley 1369 MasVnrType 8 MasVnrA

我是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())

例如:

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
     A     B    C
0  1.0  10.0  100
1  2.0  20.0  200
2  3.0  15.0    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  NaN  20.0  200
2  3.0   NaN    0
     A     B    C
0  1.0  10.0  100
1  2.0  20.0  200
2  3.0  15.0    0

我认为您忘记将
axis=0
添加到
fillna()
中。尝试了它,但没有效果。我认为您必须循环查看列表功能和特性1,然后使用fillna方法分别填充每列的nan值。不要使用具有inplace=True的fillna。它不像你想象的那样工作。嘿,普拉莫特,谢谢你的帮助。请你再解释一下,我指的是我的数据集的“MasVnrType”和“MasVnrArea”列。我仍然无法处理这些丢失的数据,前两个将使用inplace=True。剩下的,你必须通过一本字典才能让它生效。train.fillna({'LotFrontage':tain['LotFrontage'].mean()},inplace=True)尝试不使用inplace=True,只是前两个有问题,其余的都在工作您尝试了哪一行?好吧,明白了,所以问题是我没有订阅它,如果它是train['MasVnrType'],效果很好。fillna(train['MasVnrType')。替换('NA','None')[0],inplace=True)train['MasVnrArea'].fillna(train['MasVnrArea'].replace('NA','0')[0],inplace=True)缺少这些特定行中的[0],如果要将MasVnrType的'NA'替换为无,将MasVnrArea的'NA'替换为0。假设值为文本“NA”,则使用上述代码。下标[0]表示第一个值。这不是你想要的。如果值为NaN,则训练['MasVnrType'].fillna('None,inplace=True)