使用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实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
python去掉行尾的换行符方法
Jan 04 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
python爬取个性签名的方法
Jun 17 Python
Python切片操作深入详解
Jul 27 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
python hook监听事件详解
Oct 25 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
python中scipy.stats产生随机数实例讲解
Feb 19 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
May 22 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 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
用PHP函数解决SQL injection
2006/10/09 PHP
php开发环境配置记录
2011/01/14 PHP
php常用ODBC函数集(详细)
2013/06/24 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
[02:35]DOTA2英雄基础教程 末日使者
2013/12/04 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python提取log文件内容并画出图表
2019/07/08 Python
python设置环境变量的作用整理
2020/02/17 Python
详解Python流程控制语句
2020/10/28 Python
应届大专毕业生个人自荐信
2013/09/22 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
运动会广播稿80字
2014/01/23 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
保密工作实施方案
2014/02/24 职场文书
创建文明学校实施方案
2014/03/11 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
2015年高一班主任工作总结
2015/05/13 职场文书
个人原因辞职信模板
2015/05/13 职场文书
市级三好生竞选稿
2015/11/21 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书