使用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 contextlib模块使用示例
Feb 18 Python
python标准算法实现数组全排列的方法
Mar 17 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
python基于socket实现网络广播的方法
Apr 29 Python
Python二分查找详解
Sep 13 Python
Python函数的周期性执行实现方法
Aug 13 Python
python实现数据库跨服务器迁移
Apr 12 Python
Python如何读取文件中图片格式
Jan 13 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
Python 串口通信的实现
Sep 29 Python
flask框架中的cookie和session使用
Jan 31 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 array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
PHP Class&Object -- 解析PHP实现二叉树
2013/06/25 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
图片自动更新(说明)
2006/10/02 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
详解python中index()、find()方法
2019/08/29 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
Python RabbitMQ实现简单的进程间通信示例
2020/07/02 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
社区精神文明建设汇报材料
2014/08/17 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript