使用python 计算百分位数实现数据分箱代码


Posted in Python onMarch 03, 2020

对于百分位数,相信大家都比较熟悉,以下解释源引自百度百科。

百分位数,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。

因为百分位数是采用等分的方式划分数据,因此也可用此方法进行等频分箱。

import pandas as pd
import numpy as np
import random
t=pd.DataFrame(columns=['l','s'])
#随机生成1000个0到999整数
t['l']=[random.randint(0,999) for _range in range(1000)]
#定义s为1,便于统计
t['s']=1
#通过np.percentile找到分位点
l_bin=[]
for i in range(0,101,10):
 l_bin.append(np.percentile(t['l'],i))
#分位点最后一个数加上一个极小的数,否则切分后数字999会标记为nan
l_bin[-1]+=1/1e10
print('分位点:',np.array(l_bin).round(2))
#对随机数进行切分,right=False时左闭右开
t['box']=pd.cut(t['l'],l_bin,right=False)
tj=t.groupby('box')['s'].agg('sum')
print('分箱统计')
print(tj)
#生成新的标签
label=[]
for i in range(len(l_bin)-1):
 label.append(str(l_bin[i].round(4))+'+')
#原标签和自定义的新标签生成字典 
list_box_td=list(set(t['box']))
list_box_td.sort()
dict_t=dict(zip(list_box_td,label))
#根据字典进行替换
t['new_box']=t['box'].replace(dict_t)
print('新分箱统计')
tj=t.groupby('new_box')['s'].agg('sum')
print(tj)
del t['s']
print(t.head())

输出结果:

分位点: [ 0. 90.9 194.6 290. 386. 473.5 589. 688. 783.2 884.2
 997. ]
分箱统计
box
[0.0, 90.9)  100
[90.9, 194.6)  100
[194.6, 290.0)  99
[290.0, 386.0)  99
[386.0, 473.5) 102
[473.5, 589.0)  99
[589.0, 688.0) 100
[688.0, 783.2) 101
[783.2, 884.2) 100
[884.2, 997.0) 100
Name: s, dtype: int64
新分箱统计
new_box
0.0+  100
194.6+  99
290.0+  99
386.0+ 102
473.5+  99
589.0+ 100
688.0+ 101
783.2+ 100
884.2+ 100
90.9+  100
Name: s, dtype: int64
  l    box new_box
0 253 [194.6, 290.0) 194.6+
1 468 [386.0, 473.5) 386.0+
2 130 [90.9, 194.6) 90.9+
3 476 [473.5, 589.0) 473.5+
4 656 [589.0, 688.0) 589.0+

可以看出每个分箱内,约有100个数字。根据这个方法,可以自定义一些标签。

补充拓展:python 计算动态时点的百分位数

【说明】

1、动态时点:每次计算的数据框为截止于当前行的数据,即累计行(多次计算);

2、静态时点(当前时间):计算的数据框为所有行(一次计算);

【代码】

test = pd.DataFrame(np.random.randint(1, 10, size=10), columns=['value']) # 生成[1,10]的随机整数
test['pct_sf'] = test.index.map(lambda x: test.ix[:x].value.rank(pct=True)[x]) # 动态时点
test['pct'] = test.value.rank(pct=True) # 当前时点
test

使用python 计算百分位数实现数据分箱代码

以上这篇使用python 计算百分位数实现数据分箱代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基础之函数用法实例详解
Sep 10 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
在Python中操作时间之tzset()方法的使用教程
May 22 Python
分享python数据统计的一些小技巧
Jul 21 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
python实现飞机大战游戏
Oct 26 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
Django分页功能的实现代码详解
Jul 29 Python
Django 博客实现简单的全文搜索的示例代码
Feb 17 Python
实例代码讲解Python 线程池
Aug 24 Python
解决numpy和torch数据类型转化的问题
May 23 Python
利用Python计算KS的实例详解
Mar 03 #Python
python如何提取英语pdf内容并翻译
Mar 03 #Python
Pycharm如何运行.py文件的方法步骤
Mar 03 #Python
python生成大写32位uuid代码
Mar 03 #Python
python str字符串转uuid实例
Mar 03 #Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 #Python
python生成并处理uuid的实现方式
Mar 03 #Python
You might like
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
用Python进行行为驱动开发的入门教程
2015/04/23 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
Python Series从0开始索引的方法
2018/11/06 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
python实现自动打卡的示例代码
2020/10/10 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
教师推荐信范文
2013/11/24 职场文书
医院党员公开承诺书
2014/08/30 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
学雷锋主题班会教案
2015/08/13 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android