pyspark-histogram详解

最近学习Spark我主要使用pyspark api进行编程,

网络上中文的解释不是很多,api官方文档也不是很容易明白,我结合自己的理解记录下来,方便别人参考,也方便自己回顾吧

本次介绍的是 pyspark.RDD.histogram

histogram(buckets)

输入参数buckets可以是一个数字,也可以是一个列表

输出结果为一个元组,元组包含两个列表分别是桶和直方图

例如:对一个0到50的序列组成的列表,

buckets是数字时

>>> rdd = sc.parallelize(range(51))
>>> rdd.histogram(2)
([0, 25, 50], [25, 26])
参数buckets是2,输出两部分,[0,25,50]是 ,[25,26]是各个桶分布内的 频数

buckets是列表时

>>> rdd.histogram([0, 5, 25, 50])
([0, 5, 25, 50], [5, 20, 26])
参数buckets是[0,5,25,50],输出两部分,[0,5,25,50]是桶,[5,20,26]是各个桶分布内的频数

>>> rdd = sc.parallelize(["ab", "ac", "b", "bd", "ef"])
>>> rdd.histogram(("a", "b", "c"))
(('a', 'b', 'c'), [2, 2])

总结以下几点:

1、histogram 用来根据给定的参数buckets,计算直方图分布结果, buckets参数可以是一个数字,也可以是一个列表

2、所有直方图的结果集合区间右边是开区间,最后一个区间除外

      例如 : 结果[0,25, 50] 表示的桶结果是 [0,25),[25,50],   即,0 <= x < 25, 25 <= x <= 50

3、桶必须是排好序的, 并且不包含重复元素, 至少有两个元素

      例如: 结果[0,25,50]是从小到大有序的,且至少包含两个元素

4、如果参数buckets是一个数字,它会生成一个由RDD的最大值和最小值之间均匀分布的桶,

      例如: 如果最小值是0, 最大值是100, 给定buckets等于2,桶的结果是[0,50),[50,100]

      如果RDD包含无穷大,buckets必须至少是1

      如果RDD中的元素不变,min等于max, 总是返回一个桶

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值