Nan просто представляет пустые, нулевые или нулевые значения в наборе данных.Перед применением некоторого алгоритма ML к набору данных вам, во-первых, необходимо предварительно обработать набор данных для его упрощенной обработки.Другими словами это называется очисткой данных.Вы можете использовать модуль imputer scikit learn для обработки Nan.
Как проверить, имеет ли набор данных Nan :
dataframe's isnan()
возвращает список значений True / False, чтобы показать, есть ли некоторыестолбец содержит Nan или нет
, например:
str = pd.Series(['a','b',np.nan, 'c', 'np.nan'])
str.isnull()
out: False, False, True, False, True
И str.isnull().sum()
вернет вам количество нулевых значений, присутствующих в серии.В этом случае «2».Вы можете применить этот метод к самому фрейму данных, например df.isnan()
Два известных мне метода для обработки Nan :
1.Удаление строки, содержащей Nan.
, например str.dropna()
или str.dropna(inplace=True)
или df.dropna(how=all)
Но это приведет к удалению многих ценных данных из набора данных.Следовательно, в основном мы этого избегаем.
2.Импутация: замена значений Nan на среднее значение / медиану столбца.
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values='NaN', strategy='mean', axis=0)
#strategy can also be median or most_frequent
imputer = imputer.fit(training_data_df)
imputed_data = imputer.fit_transform(training_data_df.values)
print(imputed_data_df)
Надеюсь, это поможет вам.