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函数装饰器用法实例详解
Jun 04 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Python实现字典依据value排序
Feb 24 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
django解决跨域请求的问题
Nov 11 Python
Python递归函数实例讲解
Feb 27 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
Jul 22 Python
Python进度条的制作代码实例
Aug 31 Python
python扫描线填充算法详解
Feb 19 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 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四种基础算法代码实例
2013/10/29 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
JS防止用户多次提交的简单代码
2013/08/01 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
python基础知识小结之集合
2015/11/25 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Linux下多个Python版本安装教程
2018/08/15 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
Python 多进程原理及实现
2020/12/21 Python
求职自荐书范文
2013/12/04 职场文书
会议活动邀请函
2014/01/27 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
中学生检讨书1000字
2014/10/28 职场文书
预备党员转正材料
2014/12/19 职场文书
投标售后服务承诺书
2015/04/29 职场文书
冰雪公主观后感
2015/06/16 职场文书
网络研修心得体会
2016/01/08 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL