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常见文件操作的函数示例代码
Nov 15 Python
python中使用序列的方法
Aug 03 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
python3.5安装python3-tk详解
Apr 26 Python
python文件选择对话框的操作方法
Jun 27 Python
python opencv minAreaRect 生成最小外接矩形的方法
Jul 01 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 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 mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
zend framework重定向方法小结
2016/05/28 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
javascript 得到文件后缀名的思路及实现
2020/05/09 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
Python实现简单字典树的方法
2016/04/29 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python监控nginx端口和进程状态
2019/09/06 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
致1500米运动员广播稿
2014/02/07 职场文书
创建青年文明号材料
2014/05/09 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书