相关文章推荐
温柔的电梯  ·  Java ...·  1 年前    · 

pyspark数据预处理

pyspark数据预处理主要用到的是pyspark.ml.feature

1、拿到数据首先需要了解各特征的属性,是连续变量、分类变量,还是布尔变量,可以用df.dtypes初步查看,我的经验是df.dtypes结合各特征不同值个数一起看。不同值个数为1的,一般都是全部为缺失值,这种特种可以剔除(或者检查是否为取数逻辑错误);不同值个数为2,一般为布尔变量,也存在空值和一个不同特征值的现象,需要展开变量具体分析是保留还是删除;不同值个数小于20(可以视实际情况定)个的,按分类变量处理;不同值个数大于20个,但df.dtypes为string的,此时需要看是否要重新分类,或者本身是连续变量,但type有误,此时需要cast转换数据类型;不同值个数大于20个,dt.dtypes不为string的可以看看是否为时间,时间的话,可以转化为连续变量处理,其余可以当做连续变量处理

2、变量分成连续变量、分类变量、布尔变量后,接着对连续变量分桶

pyspark.ml.feature.QuantileDiscretizer ( numBuckets=2 , inputCol=None , outputCol=None , relativeError=0.001 , handleInvalid='error' )

在分桶之前不需要先补缺失值,并且 handleInvalid='keep'

3、对分桶后的连续变量(此时也是离散变量)、分类变量、布尔变量补缺失值df.na.fill

4、对变量stringIndexer

pyspark.ml.feature.StringIndexer ( inputCol=None , outputCol=None , handleInvalid='error' , stringOrderType='frequencyDesc' )

handleInvalid设置为keep

5、对变量onehot

pyspark.ml.feature.OneHotEncoder ( dropLast=True , inputCol=None , outputCol=None )

发布于 2018-11-01 06:35