使用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使用WMI检测windows系统信息、硬盘信息、网卡信息的方法
May 15 Python
Python读写txt文本文件的操作方法全解析
Jun 26 Python
python 动态加载的实现方法
Dec 22 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
Django学习教程之静态文件的调用详解
May 08 Python
对python中Json与object转化的方法详解
Dec 31 Python
Python3实现统计单词表中每个字母出现频率的方法示例
Jan 28 Python
使用pip安装python库的多种方式
Jul 31 Python
python实现PID算法及测试的例子
Aug 08 Python
Python如何调用JS文件中的函数
Aug 16 Python
Python3 读取Word文件方式
Feb 13 Python
Python学习之异常中的finally使用详解
Mar 16 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
python爬虫实战之最简单的网页爬虫教程
2017/08/13 Python
Python协程的用法和例子详解
2017/09/09 Python
Python实现随机选择元素功能
2017/09/14 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python爬虫 爬取超清壁纸代码实例
2019/08/16 Python
Python中实现输入一个整数的案例
2020/05/03 Python
青年创业培训欢迎词
2014/01/08 职场文书
关于安全演讲稿
2014/05/09 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
三峡大坝导游词
2015/01/31 职场文书
作弊检讨书范文
2015/05/06 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python
python 管理系统实现mysql交互的示例代码
2021/12/06 Python