需要清洗的數據有下面幾種形式
2.1錯誤值
出現大量0的話,可以使用缺失值替代,然后再用缺失值填補的方法處理
camp['AvgIncome']=camp['AvgIncome'].replace({0: np.NaN})
2.2 缺失值
vmean = camp['Age'].mean(axis=0, skipna=True)
camp['Age_empflag'] = camp['Age'].isnull()
camp['Age']= camp['Age'].fillna(vmean)
camp['Age'].describe()
2.3 重復
去掉重復值
2.4 數據不一致
- 時間單位不同可以使用正則使其一致化
- 金額單位不同需要一致化
2.5 離群值(異常值)
1.刪除異常值(5倍標准差之外的數據)
2.蓋帽法處理異常值,把1%的異常值用99%處的值代替
def blk(floor, root): # 'blk' will return a function
def f(x):
if x < floor:
x = floor
elif x > root:
x = root
return x
return f
q1 = camp['Age'].quantile(0.01) # 計算百分位數
q99 = camp['Age'].quantile(0.99)
blk_tot = blk(floor=q1, root=q99) # 'blk_tot' is a function
camp['Age']= camp['Age'].map(blk_tot)
camp['Age'].describe()
3.分箱法處理異常值
camp['Age_group1'] = pd.qcut( camp['Age'], 4) # 這里以age_oldest_tr字段等寬分為4段
camp.Age_group1.head()