最终我想要的是 DataFrame 中所有列的列模式。对于其他汇总统计信息,我看到了几个选项:使用 DataFrame 聚合,或将 DataFrame 的列映射到向量的 RDD(我也遇到了麻烦)并使用colStats
来自 MLlib。但我不认为模式是一个选项。
众数问题与中位数问题几乎相同。虽然计算很容易,但计算成本相当高。可以使用排序后进行本地和全局聚合,也可以使用另一个单词计数和过滤器来完成:
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
无论哪种方式,都可能需要对每一列进行完全洗牌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)