使用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不规范的日期字符串处理类
Jun 10 Python
Python数据类型详解(一)字符串
May 08 Python
Android分包MultiDex策略详解
Oct 30 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
python config文件的读写操作示例
Sep 27 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
python定时截屏实现
Nov 02 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
Python几种酷炫的进度条的方式
Apr 11 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
分享php多功能图片处理类
2016/05/15 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
js获取div高度的代码
2008/08/09 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
jQuery常用知识点总结以及平时封装常用函数
2016/02/23 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
股权投资意向书
2014/04/01 职场文书
安全生产大检查方案
2014/05/07 职场文书
保护环境建议书300字
2014/05/13 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
就业证明函
2015/06/17 职场文书
python入门之算法学习
2021/04/22 Python
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫