Kaggle 處理缺失值

2021-09-26 21:17:15 字數 2502 閱讀 6771

一:按缺失百分比去除缺失值過多的特徵

#缺失超過77%的特徵被去除

many_null_cols = [col for col in train_x.columns if train_x[col].isnull().sum() / train_x.shape[0] > 0.77]

many_null_cols_test = [col for col in test.columns if test[col].isnull().sum() / test.shape[0] > 0.77]

cols_to_drop = list(set(many_null_cols))

cols_to_drop_test = list(set(many_null_cols_test))

train_x = train_x.drop(cols_to_drop, axis=1)

test_x = test_x.drop(cols_to_drop, axis=1)

二:繪製資料集缺失百分比圖

三:分類填充缺失值,object類使用每列最多的值填充,int,float類使用每列的均值填充

obj_cols = list(train_x_drop.select_dtypes(include=['object']).columns)

for col in obj_cols:

train_x_drop[col] = train_x_drop[col].fillna(value=train_x_drop[col].mode()[0])

test_x_drop[col] = test_x_drop[col].fillna(value=test_x_drop[col].mode()[0])

other_cols = list(train_x_drop.select_dtypes(include=['int64']).columns)

for col in other_cols:

train_x_drop[col] = train_x_drop[col].fillna(value=train_x_drop[col].mean())

test_x_drop[col] = test_x_drop[col].fillna(value=test_x_drop[col].mean())

四:dropna方法的使用

#刪除所有有缺失值的行

dataframe.dropna(inplace=true)

#只有當某行全部值都缺失時,才刪除該行

dataframe.dropna(how='all',inplace=true)

#刪除那些缺失值超過四個的行

dataframe.dropna(thresh=4,inplace=true)

#用該缺失值後一行的值填充缺失

dataframe.fillna(method='bfill',inplace=true)

#用該缺失值前一行的值填充缺失

dataframe.fillna(method='ffill',inplace=true)

五:均值填充數值型缺失變數

from sklearn.preprocessing import imputer

imputer = imputer(missing_values=np.nan, strategy='median', axis=0)

census_data[['fnlwgt']] = imputer.fit_transform(census_data[['fnlwgt']])

缺失值處理

pandas使用nan not a number 表示浮點和非浮點陣列中的缺失資料,python內建的none值也會被當做na處理,pandas物件上的所有描述統計都排除了缺失資料。na處理方法 方法 說明dropna 根據各標籤的值是否存在缺失資料對軸標籤進行過濾,可通過閾值調節對缺失值的容忍度 ...

缺失值處理

之前寫過一篇文章缺失值視覺化處理 missingno 主要介紹了缺失值的檢視,今天聊一下,出現了缺失值後我們要做的後續工作,就是缺失值的處理。首先附上幾個 data資料集 data.isnull 缺失值判斷 是缺失值返回true,否則範圍false data.isnull sum 缺失值計算 返回每...

缺失值處理

資料清洗主要是刪除原始資料集中的無關資料 重複資料,平滑雜訊資料,去除與資料探勘主題無關的資料,處理缺失值 異常值等 缺失主要為完全隨機缺失,隨機缺失和非隨機缺失 資料的缺失是隨機的,資料的缺失不依賴於任何不完全變數或完全變數。資料的缺失不是完全隨機的,即該類資料的缺失依賴於其他完全變數。資料的缺失...