数据处理操作补充

数据处理补充

初始的train和test 可以通过data = pd.concat([train,test],ignore_index=True,sort=False)进行合并,为后面处理会简化

后期的拆开:

train = data.loc[data['source']=='train']
test = data.loc[data['source']=='test']

数据初览:

data.dtypes 将特征数据大概表现出来

data.value_counts():将数据不同取值出现的数值和次数显示出来

data.describe(): 表示各特征的平均数,方差等

数据异常处理:

缺失值处理

drop:drop中的inplace为true和false的差别为是否改变原有的dataframe值,如果为False要改变值需要另外赋予新的数组,

fillna:缺失值可以用data.fillna(0,inplace=True)快速填充nan所写的数据(取中间数可以调用median()函数)

isnull():识别出数据中的0原数,可以用lambda函数data[''].apply(lambda x:1 if pd.isnull(x) else 0)  注:最终可用data.apply(lambda x: sum(x.isnull()))检查数据,否则输入算法会出错.

对文本部分数据过少的处理之一:data['Source'] = data['Source'].apply(lambda x: 'other' if x not in ['S122','S133'] else x )

 数据显示

一唯的分布可以用data.boxplot(column='所要显示的一维数据')

注:主要包含六个数据节点,将一组数据从大到小排列,分别计算出他的上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有一个异常值

如                                

  • 最小值(minimum)=5              下四分位数(Q1)=7

  • 中位数(Med--也就是Q2)=8.    上四分位数(Q3)=9         最大值(maximum)=10

  • 平均值=8       四分位间距(interquartile range)={\displaystyle Q3-Q1}=2 (即ΔQ)

    在区间 Q3+1.5ΔQ, Q1-1.5ΔQ 之外的值被视为应忽略(farout)。

  • farout: 在图上不予显示,仅标注一个符号∇。

  • 最大值区间: Q3+1.5ΔQ       最小值区间: Q1-1.5ΔQ

一维分布也可以用条形图来表示(这里是xgboost一部分特征显示)


    feat_imp  = pd.Series(alg.get_booster().get_fscore()).sort_values(ascending = False)
    feat_imp.plot(kind='bar',title = 'Feature importants')
    plt.label('Feature Important score')

数值快速编码

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
var_to_encode = ['所需编码的特征']
for col in var_to_encode:
    data[col] = le.fit_transform(data[col])
    print(list(le.classes_)) 

注:print函数主要是为了可以看出编码所对应的特征值

特征值的ont-hot编码:

data = pd.get_dummies(data, columns=var_to_encode)
data.columns

猜你喜欢

转载自blog.csdn.net/qq_32763149/article/details/83548674