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中的异常处理简明介绍
Apr 13 Python
详解Python使用simplejson模块解析JSON的方法
Mar 24 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
3个用于数据科学的顶级Python库
Sep 29 Python
python 实现倒排索引的方法
Dec 25 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
python实现的config文件读写功能示例
Sep 24 Python
python多线程和多进程关系详解
Dec 14 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-MySQL教程归纳总结
2008/06/07 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
用js遍历 table的脚本
2008/07/23 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
JavaScript 学习笔记(十五)
2010/01/28 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
bootstrap datepicker插件默认英文修改为中文
2017/07/28 Javascript
vue实现分页加载效果
2019/12/24 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
详解Python异常处理中的Finally else的功能
2017/12/29 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
python hashlib加密实现代码
2019/10/17 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
会计毕业生自荐信
2013/11/21 职场文书
八一建军节部队活动方案
2014/02/04 职场文书
重阳节标语大全
2014/10/07 职场文书
影视后期实训报告
2014/11/05 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书