当前位置:  开发笔记 > 编程语言 > 正文

计算PySpark DataFrame列的模式?

如何解决《计算PySparkDataFrame列的模式?》经验,为你挑选了1个好方法。

最终我想要的是DataFrame中所有列的列模式.对于其他摘要统计,我看到了几个选项:使用DataFrame聚合,或将DataFrame的列映射到向量的RDD(我也遇到了麻烦)并使用colStatsMLlib.但我不认为模式是一种选择.



1> zero323..:

模式的问题与中位数几乎相同.虽然它易于计算,但计算相当昂贵.它可以使用sort后跟本地和全局聚合或使用just-another-wordcount和filter来完成:

import numpy as np
np.random.seed(1)

df = sc.parallelize([
    (int(x), ) for x in np.random.randint(50, size=10000)
]).toDF(["x"])

cnts = df.groupBy("x").count()
mode = cnts.join(
    cnts.agg(max("count").alias("max_")), col("count") == col("max_")
).limit(1).select("x")
mode.first()[0]
## 0

无论哪种方式,它可能需要每列完全洗牌.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有