python实现的分层随机抽样案例


Posted in Python onFebruary 25, 2020

昨天写了一段用来做分层随机抽样的代码,很粗糙,不过用公司的2万名导购名单试了一下,结果感人,我觉得此刻的我已经要上天了,哈哈哈哈哈哈

代码如下:

#分层随机抽样 stratified sampling

import xlrd, xlwt, time, random


xl = xlrd.open_workbook(r'C:\Users\Administrator\Desktop\分层抽样.xlsx')
xl_sht1 = xl.sheets()[0]
xl_sht1_nrows = xl_sht1.nrows
#表头
title = xl_sht1.row_values(0)
#把样本写进列表 sample
sample = []
for i in range(xl_sht1_nrows):
  sample.append(xl_sht1.row_values(i))
#打乱样本
random.shuffle(sample)
#把层的内容写进列表 col
col = xl_sht1.col_values(0)
#对col中的内容进行计数,获得每一类的名称对应个数的字典
col_dict = {}
for i in col:
  col_dict[i] = col_dict.get(i, 0) + 1
p = eval(input('每层抽取的比例(小数):'))
#获得每一类的名称对应抽取个数的字典
col_p = {}
k = 0
for i in col_dict.keys():
  col_p[i] = int(round(col_dict[i] * p)) #round用来四舍五入,不加int结果会变成无数个p
#开始抽样,把抽取结果写进result_l列表
result_l = []
for i in sample:
  if col_p.get(i[0], 0) > 0:
    result_l.append(i)
    col_p[i[0]] -= 1
#新建文档,写入结果
f = xlwt.Workbook()
f_sht1 = f.add_sheet('result')
n = 0
for i in title:
  f_sht1.write(0, n, i)
  n += 1
r = 1
for i in result_l:
  c = 0
  for k in i:
    f_sht1.write(r, c, k)
    c += 1
  r += 1
nowtime = time.strftime("%Y%m%d_%H%M%S", time.localtime())
f.save(r'C:\Users\Administrator\Desktop\Result_{0}.xls'.format(nowtime))
print('\n抽样成功!')
input()

原理思路如下:

1、首先数据的形式如下

python实现的分层随机抽样案例

数据自带层标签,我只需要从每层抽取一定比例的数据就可以了

2、第一步:先将源数据按行存入一个列表,然后打乱行的顺序

3、第二步:对层标签进行计数,获取每一个层标签的总数,并将结果存进字典

4、第三步:根据抽样比例p,计算出每层实际应抽取的个数,并存入一个新的字典

5、第四步:从源数据列表中抽取出目标数据,每层抽取的个数由第三步的字典进行指定

小白刚刚起步,实现的时候发现自己对数据结构和算法一点也不懂。。。。结果就写了一堆的for循环。。。。

大神们如果看到这段代码,还请不吝赐教,看看代码可以怎样优化,或者有更好的设计思路

补充拓展:pandas实现对dataframe抽样的实现

随机抽样

import pandas as pd
#对dataframe随机抽取2000个样本
pd.sample(df, n=2000)

分层抽样

利用sklean中的函数灵活进行抽样

from sklearn.model_selection import train_test_split
#y是在X中的某一个属性列
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.2, stratify=y)

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

Python 相关文章推荐
Python中无限元素列表的实现方法
Aug 18 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
深入理解Python异常处理的哲学
Feb 01 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
wxPython色环电阻计算器
Nov 18 Python
在Tensorflow中查看权重的实现
Jan 24 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python 模块重载的五种方法
Apr 24 Python
Python可变对象与不可变对象原理解析
Feb 25 #Python
Python 使用 environs 库定义环境变量的方法
Feb 25 #Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 #Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 #Python
python numpy--数组的组合和分割实例
Feb 24 #Python
python梯度下降算法的实现
Feb 24 #Python
利用python实现逐步回归
Feb 24 #Python
You might like
php获取系统变量方法小结
2015/05/29 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
js获取图片大小的函数代码
2011/09/20 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
详解ECMAScript2019/ES10新属性
2019/12/06 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
Python中如何导入类示例详解
2019/04/17 Python
python实现数字炸弹游戏程序
2020/07/17 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
爱游人:Travelliker
2017/09/05 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
统计岗位职责
2014/02/21 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书