python多维数组分位数的求取方式


Posted in Python onMarch 03, 2020

在python中计算一个多维数组的任意百分比分位数,只需用np.percentile即可,十分方便

import numpy as np
a = [154, 400, 1124, 82, 94, 108]
print np.percentile(a,95) # gives the 95th percentile

补充拓展:如何解决hive同时计算多个分位数的问题

众所周知,原生hive没有计算中位数的函数(有的平台会有),只有计算分位数的函数percentile

在数据量不大的时候,速度尚可。但是数据量一上来之后,完全计算不出来。

那么如何解决这个问题呢,我们可以使用 row_number() over()通过两次排序来解决同时计算多个分位数,速度飞快。

比如我们需要计算mkt_mcc_storeidx表下以mkt_label,mccgroup,month分组,value_mccgroup的分位数

第一步:利用row_number() over()给value_mccgroup在分组里排序,记录下排名

python多维数组分位数的求取方式

第二步:计算mkt_label,mccgroup,month分组下的数据总数

python多维数组分位数的求取方式

第三步:join前两步的结果,取rank=你需要计算的分位数位置,想计算多少个分位数就计算多少个

python多维数组分位数的求取方式

第四步:再排一次序,这次数据量就已经少了很多了,毕竟每组里面只有几个数据,记录排名

python多维数组分位数的求取方式

第五步:得到具体的分位数

python多维数组分位数的求取方式

第六步:行转成列,所有分位数计算完毕

python多维数组分位数的求取方式

后来查看了下SQL代码的执行树,发现percentile利用了map来存数据,怪不得这么耗内存,其实时间久并不是算的时间久,是因为内存不够了,系统一直在回收内存

python多维数组分位数的求取方式

而rank over 仅仅就是个排序而已

python多维数组分位数的求取方式

以上这篇python多维数组分位数的求取方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
Apr 09 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
python快速排序的实现及运行时间比较
Nov 22 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
用python拟合等角螺线的实现示例
Dec 27 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
python opencv实现图像配准与比较
Feb 09 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 #Python
python Plotly绘图工具的简单使用
Mar 03 #Python
python 函数嵌套及多函数共同运行知识点讲解
Mar 03 #Python
python实现扫雷游戏
Mar 03 #Python
python实现从ftp服务器下载文件
Mar 03 #Python
python实现简单的购物程序代码实例
Mar 03 #Python
python实现跨excel sheet复制代码实例
Mar 03 #Python
You might like
php命令行使用方法和命令行参数说明
2014/04/08 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
vue-cli的eslint相关用法
2017/09/29 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python实现的快速排序算法详解
2017/08/01 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
python excel多行合并的方法
2020/12/09 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
倡议书格式范文
2014/04/14 职场文书
我的理想演讲稿
2014/04/30 职场文书
十八大演讲稿
2014/05/22 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
党性分析自查总结
2014/10/14 职场文书
紧急通知
2015/04/17 职场文书
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python