python的等深分箱实例


Posted in Python onNovember 22, 2019

背景

当前很多文章尝试过最优分箱,python上也有cut等方法进行等宽分箱。为了方便日后输出结果以及分箱要求。做一个简单的轮子以供大家日后使用。很多能用其他轮子的地方也没有多余出力,也不托大会比别人写的好。空间复杂度尽我所能。

方法展示

话不多说上代码。

以下为等深分箱以及encoding方法

# -*- coding: utf-8 -*-
"""
Created on Tue Jan 29 17:26:38 2019
@author: DamomWCG
"""
 
 
 
class Equal_depth_box:
  
 def equal_box(list, bin_num):
  '''
  param:
  list:you need bin box list
  bin_num: you want bin num
  '''
  bin_num = 10
  list.sort() #need sort can replace by others
  list_2 = list.copy()
  all_num = len(list_2)
  bin_sep = all_num/bin_num
  bin_sep = int(bin_sep)
  bin_list = []
  for i in range(1,bin_num):
   bin_dict = {}
   bin_dict = i*bin_sep
   bin_list.append(bin_dict)
  bin_real_list = []
  for i in bin_list:
   #print(i)
   bin_real_dict = {}
   bin_real_dict = list[i]
   bin_real_list.append(bin_real_dict)
  
  return bin_real_list
  
 def replace_box(list_1,replace_list):
  '''
  param:
  list_1:you need bin list
  replace_list: from equal box, replace the original list
  '''
  import pandas as pd
  list_max = max(list_1)
  list_min = min(list_1)
  replace_list.insert(0,list_min -1) #insert start
  replace_list.append(list_max + 1) #insert end
 
  list_2 = pd.cut(list_1, bins = replace_list,
      labels = range(len(replace_list) - 1)).tolist()
  return list_2
  
  
  
 
 
if __name__ == '__main__':
 
  import random
  
  list_1 = random.sample(range(1000), 134)
  
  print(list_1.sort())
  
  print('real_list: {}'.format(list_1[0:50]))
  
  replace_list = bin_class.equal_box(list_1, 10)
 
  list_2 = bin_class.replace_box(list_1, replace_list)
  
  print('encode_list: {}'.format(list_2[0:50]))

原始git地址

https://github.com/DamonWCG/Equal_depth_box/blob/master/Equal_depth_box

使用案例

本案例数据为,我进行过一步的最优分箱,来做一步等深分箱来进行横向对比。

原始数据形式

python的等深分箱实例

具体案例

# -*- coding: utf-8 -*-
"""
Created on Wed Jan 30 16:17:19 2019
@author: DamonWCG
"""
 
from Equal_depth_box import *
 
import pandas as pd
 
df = pd.read_csv('test.csv', encoding = 'gbk')
 
df.columns
####需要分箱的列
list_1 = df['deal_city_encoding'].tolist() #本方法是针对于list,所以对于series需要进行变换
 
####需要分箱的个数
replace_list = Equal_depth_box.equal_box(list_1, 5) 
 
 
####替代的名称
 
##因为列表排序所以需要重新排序对齐,这里我有空再想想其他办法
df.sort_values(by="deal_city_encoding", inplace = True)
 
list_2 = Equal_depth_box.replace_box(list_1, replace_list)
 
df['deal_city_bin_encoding'] = list_2
 
 
 
df.to_csv('df.csv', encoding = 'gbk', index = False)

本方法现阶段encoding形式为数字型。

分箱最终结果形式

python的等深分箱实例

需要注意,我得列表形式重新decode时候需要按照当前排序数组重新编码,这个问题我年后会解决。

以上这篇python的等深分箱实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pyqt4教程之实现windows窗口小示例分享
Mar 07 Python
Python获取远程文件大小的函数代码分享
May 13 Python
Flask实现跨域请求的处理方法
Sep 27 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
python3 实现调用串口功能
Dec 26 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
Python进行区间取值案例讲解
Aug 02 Python
Python 多线程处理任务实例
Nov 07 Python
基于python实现学生信息管理系统
Nov 22 #Python
基于python cut和qcut的用法及区别详解
Nov 22 #Python
python创建学生成绩管理系统
Nov 22 #Python
Python计算不规则图形面积算法实现解析
Nov 22 #Python
python实现连续变量最优分箱详解--CART算法
Nov 22 #Python
pycharm运行scrapy过程图解
Nov 22 #Python
python迭代器常见用法实例分析
Nov 22 #Python
You might like
关于js与php互相传值的介绍
2013/06/25 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
2016/12/23 Javascript
Vue.js 2.0学习教程之从基础到组件详解
2017/04/24 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
Python数组条件过滤filter函数使用示例
2014/07/22 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Python内置异常类型全面汇总
2020/05/28 Python
python如何更新包
2020/06/11 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
小学生暑假感言
2014/02/06 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
公司岗位说明书
2015/10/08 职场文书