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压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
在Django中创建URLconf相关的通用视图的方法
Jul 20 Python
python决策树之C4.5算法详解
Dec 20 Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 Python
python使用百度文字识别功能方法详解
Jul 23 Python
python超时重新请求解决方案
Oct 21 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python 动态变量名定义与调用方法
Feb 09 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
python实现程序重启和系统重启方式
Apr 16 Python
django 外键创建注意事项说明
May 20 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
js点击选择文本的方法
2015/02/09 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
2017/03/10 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
基于python socketserver框架全面解析
2017/09/21 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Anaconda下配置python+opencv+contribx的实例讲解
2018/08/06 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
房地产开发计划书
2014/01/10 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
职工年度考核评语
2014/12/31 职场文书
兵马俑导游词
2015/02/02 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
团支部书记竞选稿
2015/11/21 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python