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使用urllib模块和pyquery实现阿里巴巴排名查询
Jan 16 Python
在Windows8上的搭建Python和Django环境
Jul 03 Python
详解Python中的各种函数的使用
May 24 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
Python流程控制 if else实现解析
Sep 02 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
Dec 14 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
php通过分类列表产生分类树数组的方法
2015/04/20 PHP
微信支付的开发流程详解
2016/09/13 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
浅谈在vue-cli3项目中解决动态引入图片img404的问题
2020/08/04 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
儿童学习python的一些小技巧
2018/05/27 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
门卫岗位安全职责
2013/12/13 职场文书
小学生综合素质评语
2014/04/23 职场文书
团组织推优材料
2014/12/29 职场文书
离职证明范本
2015/06/12 职场文书
小学语文国培研修日志
2015/11/13 职场文书
“学党章、守党纪、讲党规”学习心得体会
2016/01/14 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python