基于python 等频分箱qcut问题的解决


Posted in Python onMarch 03, 2020

在python 较新的版本中,pandas.qcut()这个函数中是有duplicates这个参数的,它能解决在等频分箱中遇到的重复值过多引起报错的问题;

在比较旧版本的python中,提供一下解决办法:

import pandas as pd
 
def pct_rank_qcut(series, n):
  '''
  series:要分箱的列
  n:箱子数
  '''
  edages = pd.series([i/n for i in range(n)] # 转换成百分比
  func = lambda x: (edages >= x).argmax() #函数:(edages >= x)返回fasle/true列表中第一次出现true的索引值
  return series.rank(pct=1).astype(float).apply(func) #series.rank(pct=1)每个值对应的百分位数,最终返回对应的组数;rank()函数传入的数据类型若为object,结果会有问题,因此进行了astype

补充拓展:Python数据离散化:等宽及等频

在处理数据时,我们往往需要将连续性变量进行离散化,最常用的方式便是等宽离散化,等频离散化,在此处我们讨论离散化的概念,只给出在python中的实现以供参考

1. 等宽离散化

使用pandas中的cut()函数进行划分

import numpy as np
import pandas as pd
 
# Discretization: Equal Width #
# Datas: Sample * Feature
def Discretization_EqualWidth(K, Datas, FeatureNumber):
  DisDatas = np.zeros_like(Datas)
  for i in range(FeatureNumber):
    DisOneFeature = pd.cut(Datas[:, i], K, labels=range(1, K+1))
    DisDatas[:, i] = DisOneFeature
  return DisDatas

2. 等频离散化

pandas中有qcut()可以使用,但是边界易出现重复值,如果为了删除重复值设置 duplicates=‘drop',则易出现于分片个数少于指定个数的问题,因此在此处不使用qcut()

import numpy as np
import pandas as pd
 
# Discretization: Equal Frequency #
# vector: single feature
def Rank_qcut(vector, K):
  quantile = np.array([float(i) / K for i in range(K + 1)]) # Quantile: K+1 values
  funBounder = lambda x: (quantile >= x).argmax()
  return vector.rank(pct=True).apply(funBounder)
 
# Discretization: Equal Frequency #
# Datas: Sample * Feature
def Discretization_EqualFrequency(K, Datas, FeatureNumber):
  DisDatas = np.zeros_like(Datas)
  w = [float(i) / K for i in range(K + 1)]
  for i in range(FeatureNumber):
    DisOneFeature = Rank_qcut(pd.Series(Datas[:, i]), K)
    #print(DisOneFeature)
    DisDatas[:, i] = DisOneFeature
  return DisDatas

以上这篇基于python 等频分箱qcut问题的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python简单日志处理类分享
Feb 14 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python自定义异常实例详解
Jul 11 Python
Python数据拟合与广义线性回归算法学习
Dec 22 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
Python常用扩展插件使用教程解析
Nov 02 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 Python
python实现快递价格查询系统
Mar 03 #Python
使用python 计算百分位数实现数据分箱代码
Mar 03 #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
You might like
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
php工具型代码之印章抠图
2018/07/18 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
用python实现的线程池实例代码
2018/01/06 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
python 文件转成16进制数组的实例
2018/07/09 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
2018/09/04 Python
详解python中的Turtle函数库
2018/11/19 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
党建工作先进材料
2014/05/02 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
导游词之永泰公主墓
2019/12/04 职场文书