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深入06——python的内存管理详解
Dec 07 Python
Golang与python线程详解及简单实例
Apr 27 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
python交互界面的退出方法
Feb 16 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
python中的反斜杠问题深入讲解
Aug 12 Python
Python实现将蓝底照片转化为白底照片功能完整实例
Dec 13 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
Jul 02 Python
python文件及目录操作代码汇总
Jul 08 Python
深入了解Python 变量作用域
Jul 24 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
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python fileinput模块使用实例
2015/05/28 Python
PyQt5组件读取参数的实例
2019/06/25 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
刑事代理授权委托书
2014/09/17 职场文书
工作证明书
2015/06/15 职场文书
python爬虫selenium模块详解
2021/03/30 Python
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js