Я новичок в питоне. Я работал с некоторыми данными, и я обнаружил некоторые недостающие данные. Что я хотел сделать, так это заполнить некоторые из них средним значением, а некоторые - режимом, а также отбросить некоторые столбцы.
Вот что я делаю
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
Я не могу работать с этими двумя столбцами. Что я делаю не так или что-то упускаю?
1 ответ
Используйте вместо этого:
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
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.