pyspark之数据处理学习【离群值】(3)
来源:互联网 发布:java有哪些框架 编辑:程序博客网 时间:2024/06/06 09:58
pyspark系列文章是本人根据《PySpark实战指南》学习pyspark中学习笔记,这本书是一本译文,有些地方感觉有点小问题,不过在本人的这些笔记中都是亲自测试跑通后的小例子。仅作参考和学习。
在做数据分析等时候,时长会碰到与样本其余数据的分布有显著偏离的数据,这种数据被称为离群值。在普遍的形式中,如果所有的值大致在Q1-1.5IQR和Q3+1.5IQR范围内(IQR指的是四分位范围,定义为上分位与下分位之差,分别为第75个百分位(Q3)和第25个百分位(Q1)),则可以认为没有离群值。
from pyspark.sql import SparkSessionspark = SparkSession.builder.appName("dataDeal").getOrCreate()df_outliers = spark.createDataFrame([ (1, 143.5, 5.3, 28), (2, 154.2, 5.5, 45), (3, 342.3, 5.1, 99), (4, 144.5, 5.5, 33), (5, 133.2, 5.4, 54), (6, 124.1, 5.1, 21), (7, 129.2, 5.3, 42), ], ['id', 'weight', 'height', 'age'])现在我们可以根据之前的定义来标记离群值。首先计算每个特征的上下截断点。使用.approxQuantile()方法,它的第一个参数指定的是列名,第二个参数可以是0或1之间的一个数(其中0.5是指计算的中位数)或者一个列表,第单个参数指定每个度量的一个可接受的误差范围(如果设置为0,就会计算一个度量的精确值,但是这么做代价会很大)
cols = ['weight','height','age']bounds = {}for col in cols: quantiles = df_outliers.approxQuantile(col,[0.25,0.75],0.05) IQR = quantiles[1] - quantiles[0] bounds[col] = [ quantiles[0] - 1.5*IQR, quantiles[1] + 1.5*IQR ]print bounds
{'age': [-11.0, 93.0], 'weight': [91.69999999999999, 191.7], 'height': [4.499999999999999, 6.1000000000000005]}现在用它来标记离群值:
#标记离群值outliers = df_outliers.select(*['id']+[( (df_outliers[c] < bounds[c][0]) | (df_outliers[c]>bounds[c][1])).alias(c+'_o') for c in cols])outliers.show()
+---+--------+--------+-----+| id|weight_o|height_o|age_o|+---+--------+--------+-----+| 1| false| false|false|| 2| false| false|false|| 3| true| false| true|| 4| false| false|false|| 5| false| false|false|| 6| false| false|false|| 7| false| false|false|+---+--------+--------+-----+由结果可知,在weight中有一个离群值,在age中有一个离群值。现在,我们已经完成了离群值的提取。下面列出了和其他数据分不明显不同的值:
#列出和其他数据分布明显不同的值df_outliers = df_outliers.join(outliers,on='id')df_outliers.filter('weight_o').select('id','weight').show()df_outliers.filter('age_o').select('id','age').show()
+---+------+| id|weight|+---+------+| 3| 342.3|+---+------++---+---+| id|age|+---+---+| 3| 99|+---+---+
对得到的离群值,需要做怎样的处理就需要根据需求而定了
阅读全文
0 0
- pyspark之数据处理学习【离群值】(3)
- pyspark之数据处理学习【缺失值处理】(2)
- pyspark之数据处理学习【数据去重】(1)
- pyspark之DataFrame学习【dataFrame查询】(3)
- 离群值
- pyspark之DataFrame学习(1)
- pyspark之MLlib学习【数据统计】(2)
- 【gloomyfish】数据分析之 – 离群值(Outliers) BoxPlot
- pcl 学习 离群点删除
- pyspark之DataFrame学习【指定dataFrame模式】(2)
- pyspark之DataFrame学习【dataFrame应用实例】(4)
- pyspark之MLlib学习【加载和转换数据】(1)
- R语言|数据预处理--3缺失值离群点处理
- pyspark.linalg模块学习
- Grubbs算法检测离群值
- 数据挖掘技术之离群点检测
- 数据挖掘之离群点检测
- Machine Learning 之 LOF离群点检验
- ios及osx集成aliyun 日志组件
- Swagger2
- jsp动作
- 约束理论
- 微信小程序--图片懒加载
- pyspark之数据处理学习【离群值】(3)
- 教你用深度学习LSTM网络预测流行音乐趋势(附代码)
- tf.nn.conv2d用法简介
- 十九、函数式编程
- Pythonjic基础‘姿势’4
- golang 工程结构与编译
- (一)spring-boot集成mybatis
- linux 查看进程 和杀死进程
- AndroidStudio相关内容