首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Top一起计算最高频繁值的有效方法。使用Dataframe (PySpark)的值

与Top一起计算最高频繁值的有效方法。使用Dataframe (PySpark)的值
EN

Stack Overflow用户
提问于 2020-11-03 14:24:04
回答 1查看 185关注 0票数 0

将数据读取到PySpark数据后。我想找到两件事:

frequencies

  • Top

  • 前5频繁值及其对应的

  • 5不同最大值

我想知道的有效方法,

示例:

代码语言:javascript
复制
Col1    |    Col2
10      |    abc
10      |    xyz
10      |    abc
90      |    xyz
10      |    abc
90      |    xyz
90      |    abc
10      |    xyz
10      |    abc
10      |    xyz

结果是-

For Col1,

最高频率值为10,90,频率分别为7,3。最大值为90,10。

同样,对于Col2也是如此。这是一个很小/很简单的例子。

My take:

记住,我想执行的动作越来越少。

逐列计算。对于Col1,

代码语言:javascript
复制
(dataframe.groupby('Col1').count()
.withColumn('rank_count', F.row_number().over(Window.orderBy('count')))
.withColumn('rank_value', F.row_number().over(Window.orderBy('Col1')))
.filter("rank_value <= 5 or rank_count <= 5").collect())

然后从采集的输出中提取最终结果。

EN

回答 1

Stack Overflow用户

发布于 2020-11-03 15:02:36

为了在Col1中找到最常见的值,

代码语言:javascript
复制
    dataframe.groupby(col('Col1')).agg(count('*').alias('frequency')\
    .sort(col('frequency'),ascending=False).show(5,False)

在Col1中的数据中查找前5种不同的值

代码语言:javascript
复制
   dataframe.select('Col1').distinct().orderBy("Col1", ascending=False).show(5,False)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64664674

复制
相关文章

相似问题

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