機器學習和資料探勘中所使用的資料,永遠不可能是完美的。很多特徵,對於分析和建模來說意義非凡,但對於實 際收集資料的人卻不是如此,因此資料探勘之中,常常會有重要的字段缺失值很多,但又不能捨棄欄位的情況。因 此,資料預處理中非常重要的一項就是處理缺失值。
從kaggle中簡單的獲取的鐵達尼號的遇難者生存資料,對其中缺失的值進行填充,其中年齡可以用中位數,艙位可以用眾數。
import pandas as pd
data = pd.read_csv(r"c:\users\jyuxuan\desktop\sklearn\預處理資料\narrativedata.csv"
, index_col=0)
# 防止多索引
# print(data.info())
# print()
age = data.loc[:,
"age"
].values.reshape(-1
,1)# sklearn當中特徵矩陣必須是二維
age[:20
]print
(age[:20
])#前20行用作展示,實際上把所有的缺失值使用中位數填充
from sklearn.impute import ******imputer
imp_mean = ******imputer(
)# 例項化,預設用均值填補
imp_median = ******imputer(strategy=
"median"
)# 用中位數填補
imp_0 = ******imputer(strategy=
"constant"
, fill_value=0)
# 用0填補
imp_mean = imp_mean.fit_transform(age)
imp_median = imp_median.fit_transform(age)
imp_0 = imp_0.fit_transform(age)
# 使用中位數填補age
data.loc[:,
"age"
]= imp_median
print
(data.info())
print()
#使用眾數填補embarked
embarked=data.loc[:,
"embarked"
].values.reshape(-1
,1)imp_mode=******imputer(strategy=
"most_frequent"
)data.loc[:,
"embarked"
]=imp_mode.fit_transform(embarked)
print
(data.info())
print
()
使用pandas和numpy進行填補更加簡單方便
import pandas as pd data = pd.read_csv(r"c:\users\jyuxuan\desktop\sklearn\預處理資料\narrativedata.csv"
,index_col=0)
data.head()
data.loc[:,
"age"
]= data.loc[:,
"age"
].fillna(data.loc[:,
"age"
].median())
#.fillna 在dataframe裡面直接進行填補
data.dropna(axis=
0,inplace=
true
)#.dropna(axis=0)刪除所有有缺失值的行,
#.dropna(axis=1)刪除所有有缺失值的列
#引數inplace,為true表示在原資料集上進行修改,為false表示生成乙個複製物件,不修改原資料,預設false
eviews如何處理缺失資料填補 缺失值的處理
一 缺失值產生的原因 缺失值的產生的原因多種多樣,主要分為機械原因和人為原因。機械原因是由於機械原因導致的資料收集或儲存的失敗造成的資料缺失,比如資料儲存的失敗,儲存器損壞,機械故障導致某段時間資料未能收集 對於定時資料採集而言 人為原因是由於人的主觀失誤 歷史侷限或有意隱瞞造成的資料缺失,比如,在...
資料缺失值填補
缺失值填充方法包括簡單填充 屬性填充和例項填充三種型別,本文主要研究屬性填充方式。填充依賴原始資料的單一或少量屬性維度,利用屬性間的關係或屬性潛在的規則對缺失值進行填充。常用的屬性填充方法有 基於回歸分析 資訊增益 灰色 的方法和em 演算法等。基於回歸分析的填充方法通過擬合回歸數學模型計算缺失值,...
Python例項第4講 填補缺失值
在這個例子裡,我們向大家展示填補缺失值比丟棄它們得到的結果更好。但是請注意,缺失值填補並不總會改善 結果,所以請使用交叉驗證評價。有的時候,丟棄缺失行或使用標記值反而更有效。一般時候,缺失值可以用均值 中位數或眾數代替。當變數較多時,用中位數代替是一種穩健的方法。在本例中,填補將有助於分類器接近原始...