关于求解中位数,我们知道在Python中直接有中位数处理函数(mean),比如在Python中求解一个中位数,代码很简单。

Python计算中位数

import numpy as npnums = [1.1,2.2,3.3,4.4,5.5,6.6]

均值

np.mean(nums)

中位数

np.median(nums)

在hive中没有直接提供相关的mean函数,但官方提供了两个UDAF,percentile和percentile_approx。

我们看下官方是怎么说的

DOUBLEpercentile(BIGINT col, p)Returns the exact pthpercentile of a
column in the group (does not work with floating point types). p must
be between 0 and 1. NOTE: A true percentile can only be computed for
integer values. Use PERCENTILE_APPROX if your input is non-integral.

arraypercentile(BIGINT col, array(p1[, p2]…))Returns the exact
percentiles p1, p2, … of a column in the group (does not work with
floating point types). pimust be between 0 and 1. NOTE: A true
percentile can only be computed for integer values. Use
PERCENTILE_APPROX if your input is non-integral.

DOUBLEpercentile_approx(DOUBLE col, p [, B])Returns an approximate
pthpercentile of a numeric column (including floating point types) in
the group. The B parameter controls approximation accuracy at the
cost of memory. Higher values yield better approximations, and the
default is 10,000. When the number of distinct values in col is
smaller than B, this gives an exact percentile value.

arraypercentile_approx(DOUBLE col, array(p1[, p2]…) [, B])Same as
above, but accepts and returns an array of percentile values instead
of a single one.

请注意,官方文档上说了一句话:NOTE: A true percentile can only be computed for integer values. UsePERCENTILE_APPROX if your input is non-integral.

也就是说,真正的中位数只能用percentile来计算,输入需要为整数类型,使用percentile_approx(输入为浮点型)计算得到的并不是真正的中位数,也就是所说的近似中位数,经过大量数据验证,有时候这个近似中位数和真正的中位数差别还是很大的。

如何对有小数的数据求取中位数呢?

可以把小数转换为整数,然后再求取中位数(如先✖️乘10000)

sparksql中也是如此求取中位数的,赶快去试一试吧!

Spark如何求解中位数相关推荐

  1. hive求解中位数的几种方法

    hive求解中位数的几种方法 前言 两种解法 解法1:利用中位数的位次特征 解法2:利用升序与降序的差值 解法2.1: 延伸问题:频次+分数 参考文章 前言 假设我们有一张学生成绩表student_s ...

  2. 针对中位数求解的几道题

    首选用堆,一般用两个堆来求解中位数. class MedianFinder {int count;PriorityQueue<Integer> max;PriorityQueue<I ...

  3. Excel在统计分析中的应用—第二章—描述性统计-分组数据的中位数的求解方法(组离散数据)

    对于未分组数据,可使用Excel的MEDIAN函数求解中位数. 对于分组数据,分为: 1. 组离散数据的中位数: 首先要构造累积频率分布表,然后通过累积频率分布表确定数据的中位数对应的观测值的位置,然 ...

  4. 两个有序数组的中位数(第k大的数)

    问题:两个已经排好序的数组,找出两个数组合并后的中位数(如果两个数组的元素数目是偶数,返回上中位数). 感觉这种题目挺难的,尤其是将算法完全写对.因为当初自己微软面试的时候遇到了,但是没有想出来思路. ...

  5. mysql查询id为偶数_MySQL中查询中位数?

    导读:计算中位数可能是小学的内容,然而在数据库查询中实现却并不是一件容易的事.我们今天就来看看都有哪些方法可以实现. 注:本文所用MySQL版本无限制,所列题目均来源于LeetCode. LeetCo ...

  6. mysql查找有小数点的数据_MySQL中查询中位数?

    导读:计算中位数可能是小学的内容,然而在数据库查询中实现却并不是一件容易的事.我们今天就来看看都有哪些方法可以实现. 注:本文所用MySQL版本无限制,所列题目均来源于LeetCode. LeetCo ...

  7. 寻找两个有序数组的中位数

      之前讲解过一道数据流求中位数的题目,但是仔细一想觉得那一次对几种数据结构简单的分析了一下实现,并没有对中位数的题目做一个凝练总结,这一次借这个机会,好好整理一下思路. 题目描述   给定两个大小为 ...

  8. MySQL中查询中位数?

    导读 计算中位数可能是小学的内容,然而在数据库查询中实现却并不是一件容易的事.我们今天就来看看都有哪些方法可以实现. 注:本文所用MySQL版本无限制,所列题目均来源于LeetCode. LeetCo ...

  9. 寻找两个有序数组的中位数(附上三种解法)

    目录 •写在前面 •题目 •解法一 •解法二 •解法三 •结束 •写在前面 这道题比较经典,我当时在做的时候,想出了两种解决方案,不过总感觉算法不够优美,所以找到了另一种我觉得非常精妙的解法,利用了K ...

  10. 稀疏表示求解:OMP(The Orthogonal Matching Pursuit Algorithm)

    稀疏表示求解:OMP(The Orthogonal Matching Pursuit Algorithm) 文章目录 稀疏表示求解:OMP(The Orthogonal Matching Pursui ...

最新文章

  1. JavaScript语言基础4
  2. linux管道阻塞代码,linux中的管道
  3. TensorFlow索引与切片语句
  4. Mybatis中mapper文件中的两层循环
  5. 笑到打鸣~ | 今日趣图
  6. 图解自监督学习(CV)
  7. 计算机网络课程设计之Tracert与Ping程序设计与实现
  8. 嵌入式Linux的QT版本,嵌入式Linux版本Qt5.4快速部署
  9. 下厨房 APP 崩了!原来年夜饭都是边学边做?
  10. android mount --bind挂载目录
  11. 简单的Python少儿编程
  12. sas字段有html脚本,sas 实现自动化报表格式之定性变量
  13. Redis缓存雪崩/穿透/击穿
  14. 记录-如何在集成RTL8168网卡的主板上安装ESXi6.0
  15. 循环冗余校验-CRC
  16. linux电容触摸屏驱动参数,基于FT5x06嵌入式Linux电容触摸屏驱动
  17. 32位计算机怎么安装ps,ps怎么安装到电脑上(免费教你安装ps)
  18. 小米9将正式更新android q,小米又良心一波,小米9用户将迎九大更新,Android Q即将到来...
  19. js提取数组对象中的最大值和最小值
  20. 【数值预测案例】(6) LSTM、GRU 时间序列股票数据预测,附TensorFlow完整代码

热门文章

  1. 路由器、交换机、集线器
  2. 获取iv和encryptedData
  3. 大数据导出excel大小限制_EXCEL大数据量导出的解决方案(转)
  4. R语言对数据进行非参数检验
  5. 如何在卫星地图上定位(经纬度定位)
  6. 阿里云服务器ping不通github或其他域名
  7. 没有无线网卡的服务器开wifi,没有无线网卡怎么办?闲置路由器替代无线网卡(斐讯K2为例)-无线网卡设置...
  8. Java伽马什么意思_伽马什么意思 读音
  9. 第五章 数组及排序 ① 笔记
  10. 纯CSS制作-旋转立方体效果