python数据挖掘---数据清洗篇(附代码)

 

在数据挖掘路上点点滴滴,遇到的数据清洗的一些常用技巧和方法,记录下来,并持续更新。

1.01读取数据

不要索引,去掉字段前后空格

train=pd.read_csv('train.csv',skipinitialspace=True,index_col=0)

 

1.02缺失值处理

按列统计缺失值比例,决定去除或者填充

all_missing=all_dummies.isnull().sum() #按列查看缺失值

all_missing_ration=(all_dummies.isnull().sum()/len(all_data))*100#按列查看缺失率

all_missing=all_missing.drop(all_missing[all_missing==0].index).sort_values(ascending=False)[:20]#降序查看前20个

 

1.03去掉异常值

统计数值型特征标准差,接近于0的就是无波动的剔除2.原始数据上训练xgboost输出特征的重要性,取前20个特征,统计每个样本在这20个特征的缺失值个数,将缺失值>10个的样本剔除。

train=train.drop(train[(train['GrLivArea']>4000) & (train['SalePrice']<200000)].index)

 

1.04用热力图查看变量间的相关程度

k = 10      #统计跟我目标变量最有联系的前10个
cols = corrmat.nlargest(k, 'SalePrice')['SalePrice'].index       #pandas.nlarge()是输出最大相关排序,排完了之后选取salprice列的索引
cm = np.corrcoef(df_train[cols].values.T)             #设置数据级
sns.set(font_scale=1.25)
hm = sns.heatmap(cm, cbar=True, annot=True, square=True, fmt='.2f', annot_kws={'size': 10}, yticklabels=cols.values, xticklabels=cols.values)  #annot显示相关程度数字
plt.show()

 

1.14删除行列

某一行axis=1,不加默认为删除列

train=train.drop(['SalePrice'],axis=1)

 

1.15合并数据

上下合并axis=0,左右合并axis=1

all=pd.concat((train,test),axis=0)

all.shape

 

1.16数据类型转换

将看似数值型数据变成分类数据

all['MSSubClass']=all['MSSubClass'].astype(str)

all['MSSubClass'].value_counts()

 

1.17查看全部是数值型的列

pd.value_counts(all_new.columns[all_new.dtypes !=object]).sum()

或者numerical_feature = list(feature_type[feature_type.type=='Numerical']['feature'])

1.18查看数据的偏度和峰度

符合正态分布的也就是

print("Skewness: %f" % df_train['SalePrice'].skew())
print("Kurtosis: %f" % df_train['SalePrice'].kurt())

1.19生成数组操作

np.array([[1,2,3],[9,8,7],[6,5,4]]),

生成3*3的数组np.arange(12).reshape(3,4),

图片矢量化np.ndarray((lens,channels,rows,colus),dtype=uint8)

1.20 enumerate 遍历函数

用于遍历序列中的元素以及它们的下标:

for index,value in enumerate(('a','b','c')):
   print(index,value)

1.21数据不平衡处理

A.采样:上采样(过采样,小众实例增加),复制多份数据加上随机干扰;下采样(欠采样,多得减少),有放回重采样部分数据。

B.数据合成:smote,它利用小众样本在特征空间的相似性来生成新样本。Pythonlmblearn.

from imblearn.over_sampling import SMOTE  安装:pip install -U imbalanced-learn

C.加权

D.分类::把它看做一分类(one class learning 或异常检测问题,这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括one-class-SVM

 

 

奋斗路上,与君共勉。

你可能感兴趣的:(机器学习,python数据分析)