對於一個DataFrame數據, 如何查看其缺失值的情況
%matplotlib inline
import missingno as msno
msno.matrix(data, figsize = (16, 5))
def missing_values_table(df):
mis_val = df.isnull().sum() # 總缺失值
mis_val_percent = 100 * df.isnull().sum() / len(df) # 缺失值比例
mis_val_table = pd.concat([mis_val, mis_val_percent], axis = 1) # 缺失值製成表格
mis_val_table_ren_columns = mis_val_table.rename(columns = {0:'Missing Values',
1:'% of Total Values'})
mis_val_table_ren_columns = mis_val_table_ren_columns[
mis_val_table_ren_columns.iloc[:,1] != 0].sort_values('% of Total Values',ascending=False).round(1)
# 缺失值比例列由大到小排序
print('Your selected dataframe has {} columns.\nThere are {} columns that have missing values.'.format(df.shape[1], mis_val_table_ren_columns.shape[0]))
# 打印缺失值信息
return mis_val_table_ren_columns
missing_values_table(data)
# 獲取缺失值比例 > 50% 的列
missing_df = missing_values_table(data)
missing_columns = list(missing_df[missing_df['% of Total Values'] > 50].index)
print('We will remove %d columns.' % len(missing_columns))
# 刪除缺失值比例高於50%的列
data = data.drop(columns = list(missing_columns))
Your selected dataframe has 60 columns.
There are 46 columns that have missing values.
We will remove 11 columns.