缺失值的分類
按照資料缺失機制可分為:
不可忽略的缺失(non-ignorable missing ,nim) 或非隨機缺失(not missing at random, nmar, or, missing not at random, mnar),如果不完全變數中資料的缺失既依賴於完全變數又依賴於不完全變數本身,這種缺失即為不可忽略的缺失。
【注意】:panda讀取的數值型資料,缺失資料顯示「nan」(not a number)。
資料值的處理方法
主要就是兩種方法:
【注意】缺失值的插補只能用於客觀資料。由於主觀資料受人的影響,其所涉及的真實值不能保證。
1、刪除含有缺失值的個案(2種方法)
(1)簡單刪除法
簡單刪除法是對缺失值進行處理的最原始方法。它將存在缺失值的個案刪除。如果資料缺失問題可以通過簡單的刪除小部分樣本來達到目標,那麼這個方法是最有效的。
(2)權重法
當缺失值的型別為非完全隨機缺失的時候,可以通過對完整的資料加權來減小偏差。把資料不完全的個案標記後,將完整的資料個案賦予不同的權重,個案的權重可以通過logistic或probit回歸求得。
如果解釋變數中存在對權重估計起決定行因素的變數,那麼這種方法可以有效減小偏差。如果解釋變數和權重並不相關,它並不能減小偏差。
對於存在多個屬性缺失的情況,就需要對不同屬性的缺失組合賦不同的權重,這將大大增加計算的難度,降低**的準確性,這時權重法並不理想。
2、可能值插補缺失值
(1)均值插補
屬於單值插補。資料的屬性分為定距型和非定距型。如果缺失值是定距型的,就以該屬性存在值的平均值來插補缺失的值;如果缺失值是非定距型的,就用該屬性的眾數來補齊缺失的值。
(2)利用同類均值插補
屬於單值插補。用層次聚類模型**缺失變數的型別,再以該型別的均值插補。
假設為資訊完全的變數,為存在缺失值的變數,那麼首先對或其子集行聚類,然後按缺失個案所屬類來插補不同類的均值。
如果在以後統計分析中還需以引入的解釋變數和做分析,那麼這種插補方法將在模型中引入自相關,給分析造成障礙。
(3)極大似然估計(max likelihood ,ml)
在缺失型別為隨機缺失的條件下,假設模型對於完整的樣本是正確的,那麼通過觀測資料的邊際分布可以對未知引數進行極大似然估計(little and rubin)。
這種方法也被稱為忽略缺失值的極大似然估計,對於極大似然的引數估計實際中常採用的計算方法是期望值最大化(expectation maximization,em)。
該方法比刪除個案和單值插補更有吸引力,前提是適用於大樣本,有效樣本的數量足夠以保證ml估計值是漸近無偏的並服從正態分佈。這種方法可能會陷入區域性極值,收斂速度也不是很快,並且計算很複雜。
(4)多重插補(multiple imputation,mi)
多值插補的思想**於貝葉斯估計,認為待插補的值是隨機的,它的值來自於已觀測到的值。具體實踐上通常是估計出待插補的值,然後再加上不同的雜訊,形成多組可選插補值。根據某種選擇依據,選取最合適的插補值。
多重插補方法的三個步驟:
1、np.nan np.nan是乙個麻煩的東西,首先它不等與任何東西,甚至不等於自己
2、none none比前者稍微好些,至少它會等於自身
知識點:dropna()
df1 = df.dropna(axis=0,subset = ['b']) (過濾掉b列有缺失的行,注意:若缺失值為空字串則無法過濾)
詳解: signature: df.dropna(axis=0, how='any', thresh=none, subset=none, inplace=false)axis : , default 0
0, or 'index':刪除包含丟失值的行
1, or 'columns':刪除包含丟失值的列
預設為0 how : , default 'any'
'any': 如果存在na值,則刪除該行或列
'all': 如果所有值都是na,則刪除該行或列
thresh:非空元素最低數量。int型,預設為none。如果該行/列中,非空元素數量小於這個值,就刪除該行/列。
subset:子集。列表,元素為行或者列的索引。如果axis=0或者『index』,subset中元素為列的索引;如果axis=1或者『column』,subset中元素為行的索引。由subset限制的子區域,是判斷是否刪除該行/列的條件判斷區域。
inplace:是否原地替換。布林值,預設為false。如果為true,則在原dataframe上進行操作,返回值為none。
資料預處理 缺失值處理
資料中的缺失值是個非常棘手的問題,有很多文獻都致力於解決這個問題。資料缺失的含義是 假設有 n n 個樣本,每個樣本20個特徵。但在一些樣本中出於某種原因某個特徵無效,則就構不成乙個完整的樣本。對於這樣的問題,有些情況下是不能直接將其拋棄的,對其進行挽救就是缺失值處理 1 使用可用特徵的均值來填補缺...
Pandas 缺失值處理
二 處理缺失值 首先拿到乙份資料,以dataframe提取後,要檢視缺失值的情況 import pandas as pd df pd.read csv df.isnull 獲得true,false的返回值 df.isnull sum 判斷缺失的數量常用此介面來快速判斷各特徵的缺失值情況!df.dro...
Pandas缺失值處理
判斷資料是否為nan pd.isnull df pd.notnull df 判斷缺失值是否存在 np.all pd.notnull data 返回false代表有空值 np.any pd.isnull data 返回true代表有空值處理方式 2 替換缺失值 fillna value,inplace...