基于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 相关文章推荐
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
django中的setting最佳配置小结
Nov 21 Python
pandas数值计算与排序方法
Apr 12 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
Sep 25 Python
Centos7 下安装最新的python3.8
Oct 28 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
Python Numpy库常见用法入门教程
Jan 16 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
python基础之文件处理知识总结
May 23 Python
Python入门学习之类的相关知识总结
May 25 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的配置文件php.ini
2006/10/09 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
PDO::errorInfo讲解
2019/01/28 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
ExtJs中简单的登录界面制作方法
2010/08/19 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
Python编写Windows Service服务程序
2018/01/04 Python
python执行CMD指令,并获取返回的方法
2018/12/19 Python
python对于requests的封装方法详解
2019/01/03 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python分布式计算dispy的使用详解
2019/12/22 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
Python 在局部变量域中执行代码
2020/08/07 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
Java面向对象面试题
2016/12/26 面试题
婚礼新人答谢词
2015/01/04 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技