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实现下载网易云音乐的高清MV
Mar 16 Python
Python金融数据可视化汇总
Nov 17 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
将python代码和注释分离的方法
Apr 21 Python
Flask框架web开发之零基础入门
Dec 10 Python
Python WEB应用部署的实现方法
Jan 02 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python 连续不等式语法糖实例
Apr 15 Python
Python 绘制可视化折线图
Jul 22 Python
python 如何对logging日志封装
Dec 02 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
React 组件间的通信示例
2018/06/14 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
原生JS实现天气预报
2020/06/16 Javascript
python判断字符串是否纯数字的方法
2014/11/19 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
西式婚礼证婚词
2014/01/12 职场文书
质量承诺书格式范文
2015/04/28 职场文书
校友会致辞
2015/07/30 职场文书
技术入股合作协议书
2016/03/21 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
Python中递归以及递归遍历目录详解
2021/10/24 Python