首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Scala Spark中,如何根据列的百分位值过滤数据帧

在Scala Spark中,如何根据列的百分位值过滤数据帧
EN

Stack Overflow用户
提问于 2020-11-03 02:18:41
回答 1查看 123关注 0票数 0

假设我有这个数据帧:

代码语言:javascript
代码运行次数:0
运行
复制
  val df = Seq(("Mike",1),("Kevin",2),("Bob",3),("Steve",4)).toDF("name","score")

我想过滤这个数据帧,以便它只返回"score“列大于等于第75个百分位数的行。我该怎么做呢?

非常感谢,祝你有愉快的一天!

EN

回答 1

Stack Overflow用户

发布于 2020-11-03 04:44:58

你想让你的过滤器基于的是upper quartile

它也被称为上四分位数或第75个经验四分位数,75%的数据位于这一点以下。

根据答案here,您可以使用spark的approximateQuantile来获得您想要的内容:

代码语言:javascript
代码运行次数:0
运行
复制
val q = df.stat.approxQuantile("score", Array(.75), 0)
q: Array[Double] = Array(3.0)

这个数组(q)给出了第三个和第四个四分位数之间的边界。

使用一个简单的spark过滤器就可以得到你想要的:

代码语言:javascript
代码运行次数:0
运行
复制
df.filter($"score" >= q.head).show
+-----+-----+
| name|score|
+-----+-----+
|  Bob|    3|
|Steve|    4|
+-----+-----+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64651093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档