一、缺失值處理 isnull( ) 、fillna( ) 、dropna( )
(1)檢視
檢視資料集缺失,返回每列的缺失個數 df.isnull().sum()
檢視某字段有缺失的行 df[df.a.isnull()]
檢視某欄位每行的缺失情況:返回t/f:df.score.isnull() 、返回0/1:df.score.isnull().astype(int)
行的缺失佔比大於60%的列:data.ix[data.isnull().sum(axis=1)/data.shape[1]>0.6,:]
列的缺失佔比大於60%的行:data.isnull().sum(axis=0)/data.shape[0]>0.6
import missingno as msno
msno.bar(customer, color='indianred')
(2)填補 fillna
#填補一列:df.a.fillna(df.a.mean/median()),#mean:使用均值填補、median:使用中位數填補
#填補多列:
fill_cols=['a','b','c']
fill_values= #使用每個欄位的值的眾數填補
df=df.fillna(fill_values)
def set_missing(df):
# 把已有的數值型特徵取出來
process_df = df.ix[:,[12,1,2,3,4,5,6,7,8,9,10,14,16]]
# 分成已知該特徵和未知該特徵兩部分
known = process_df[process_df.stockmoney>0].as_matrix()
unknown = process_df[process_df.stockmoney==0].as_matrix()
# x為特徵屬性值
x = known[:, 1:]
# y為結果標籤值
y = known[:, 0]
# fit到randomforestregressor之中
rfr = randomforestregressor(random_state=0,
n_estimators=200,max_depth=3,n_jobs=-1)
rfr.fit(x,y)
# 用得到的模型進行未知特徵值**
predicted = rfr.predict(unknown[:, 1:]).round(0)
print(predicted)
# 用得到的**結果填補原缺失資料
df.loc[(df.stockmoney==0), 'stockmoney'] = predicted
return df
data=set_missing(data07)
(3)刪除 dropna
二、重複值處理duplicated( )、drop_duplicates( )
(1)檢視
df.duplicated().sum()
(df.duplicated(subset=['a','b','c'])).sum()
df[df.a.duplicated()]
df[df.duplicated(subset=['a','b','c'])] #isnull( )沒有此用法
(2)去重
df.drop_duplicates(subset=none, keep='first', inplace=false)
keep : , default first』刪除重複項並保留第一次出現的項(duplicated和drop_duplicates預設保留的是第乙個出現的值組合)
資料預處理 缺失值處理
資料中的缺失值是個非常棘手的問題,有很多文獻都致力於解決這個問題。資料缺失的含義是 假設有 n n 個樣本,每個樣本20個特徵。但在一些樣本中出於某種原因某個特徵無效,則就構不成乙個完整的樣本。對於這樣的問題,有些情況下是不能直接將其拋棄的,對其進行挽救就是缺失值處理 1 使用可用特徵的均值來填補缺...
資料預處理之缺失值處理
刪除法 刪除小部分樣本,在樣本量大時 刪除部分所佔比例小於5 時 可以使用 插補法 均值插補 分為定距型 插入均值 和非定距型 眾數或者中值 回歸插補 線性和非線性回歸 極大似然估計mle 正態分佈為例 極大似然原理的直觀想法我們用下面例子說明,在 權力的遊戲 中有個場景,老徒利死的時候,屍體放在穿...
pandas資料預處理 缺失值
缺失值的分類 按照資料缺失機制可分為 不可忽略的缺失 non ignorable missing nim 或非隨機缺失 not missing at random,nmar,or,missing not at random,mnar 如果不完全變數中資料的缺失既依賴於完全變數又依賴於不完全變數本身,...