使用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使用新浪微博api上传图片到微博示例
Jan 10 Python
Python version 2.7 required, which was not found in the registry
Aug 26 Python
Python中max函数用于二维列表的实例
Apr 03 Python
pandas数值计算与排序方法
Apr 12 Python
python画折线图的程序
Jul 26 Python
详解python 注释、变量、类型
Aug 10 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP:风雨欲来 路在何方?
2006/10/09 PHP
php中对2个数组相加的函数
2011/06/24 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
Python extract及contains方法代码实例
2020/09/11 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
公司清洁工岗位职责
2013/12/14 职场文书
前处理班长职位说明书
2014/03/01 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
2014年党务工作总结
2014/11/25 职场文书
2015财务年终工作总结范文
2015/05/22 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
小学生优秀作文范文(六篇)
2019/07/10 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
python使用BeautifulSoup 解析HTML
2022/04/24 Python