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 相关文章推荐
Python中用pycurl监控http响应时间脚本分享
Feb 02 Python
Python脚本暴力破解栅栏密码
Oct 19 Python
Python松散正则表达式用法分析
Apr 29 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
使用django的ORM框架按月统计近一年内的数据方法
Jul 18 Python
详解Python3 pandas.merge用法
Sep 05 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 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
php 上传功能实例代码
2010/04/13 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
详解redux异步操作实践
2018/08/15 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
浅谈Node 异步IO和事件循环
2019/05/05 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
详解Django中的权限和组以及消息
2015/07/23 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
化工机械应届生求职信
2013/11/04 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
爱心捐助倡议书
2014/05/19 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
质量主管工作职责
2014/09/26 职场文书
大二学生自我检讨书
2014/10/23 职场文书
个性与发展自我评价
2015/03/06 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL