工作中使用hive进行数据预处理,有时候需要对数据抽样来做一些评估分析。下面记录通过python进行分层随机抽样的过程。

使用python连接数据库读取数据请参考:使用python连接数据库

import sqlalchemy
import pandas as pd
import numpy as np# 1. 连接hive获取数据
def get_hive_data(sql):user_name = "hive引擎地址"hive_engine = sqlalchemy.create_engine(user_name)data = pd.read_sql(sql, hive_engine)print ("\n数据读取完毕\n")return data# 2. 确定抽样字段(入参项及其他变量字段), 读取数据
sql = """ select sgroup, var1, var2, var3 from table1 """
df = get_hive_data(sql)# 3. 确认分层抽样的样本量。假设按group(枚举值grp1,grp2,grp3)分组抽样,每组抽样量如下:
sgroup  实际统计量 抽样量    权重
grp1     1000       500     2
grp2     800        200     4
grp3     600        150     4
# 备注:此处的抽样量不是分组的实际统计量,并且抽样量要小于实际统计量# 4. 抽样代码
typicalNdict = {  "grp1":500,"grp2":200,"grp3":150}# 计算分组的实际统计量,注意count()计数会过滤掉空值,要选择无空值的变量进行统计
# 最后出来的各分组统计之和要等于df.shape[0]
df_all = df.groupby("sgroup", as_index=False)['var1'].count()
df_all = df_all.rename(columns={'var1':"grp_cnt"} # 重命名typicalNdict_df = pd.DataFrame({'sgroup' :list(typicalNdict.keys()), 's_grp_cnt':list(typicalNdict.values())})
sample_df = df.merge(df_all, how='inner', on=['sgroup']).merge(typicalNdict_df , how='inner', on=['sgroup'])def typicalSampling(group, typicalNdict):name = group.namen = typicalNdict[name]return group.sample(n=n)np.random.seed(seed=3032) # 设置随机数
rslt= df_sample.groupby('sgroup', group_keys=False).apply(typicalSampling, typicalNdict)# weight 是权重,方便后面计算时对各类指标进行还原
rslt['weight']=rslt['grp_cnt']/rslt['s_grp_cnt'] rslt.insert(0, 'id', np.arange(1, len(rslt)+1) # 插入id
rslt.to_excel('sample_rslt.xlsx', index=False)

使用python进行数据抽样相关推荐

  1. python抽样_python数据预处理 :数据抽样解析

    何为数据抽样: 抽样是数据处理的一种基本方法,常常伴随着计算资源不足.获取全部数据困难.时效性要求等情况使用. 抽样方法: 一般有四种方法: 随机抽样 直接从整体数据中等概率抽取n个样本.这种方法优势 ...

  2. Python数据抽样

    1.数据的导入查看 参考参考 import pandas as pd f = open("E:/test.csv", encoding="utf-8") con ...

  3. Python +大数据-知行教育(四)-意向用户主题看板_全量流程

    Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...

  4. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

  5. Python+大数据-Spark技术栈(二)SparkBaseCore

    Python+大数据-Spark技术栈(二)SparkBase&Core 学习目标 掌握SparkOnYarn搭建 掌握RDD的基础创建及相关算子操作 了解PySpark的架构及角色 环境搭建 ...

  6. 在Mac上使用pip3安装python的数据统计模块实录

    业务需求 目前我需要快速搭建一套python的数据统计和科学计算环境,来处理我工作中遇到的大量业务数据,做模拟和验证结论.我需要避免安装过程中的任何失败或包依赖的繁琐,最好几行命令就完事大吉! 下面是 ...

  7. pandas数据预处理(标准化归一化、离散化/分箱/分桶、分类数据处理、时间类型数据处理、样本类别分布不均衡数据处理、数据抽样)

    1. 数值型数据的处理 1.1 标准化&归一化 数据标准化是一个常用的数据预处理操作,目的是处理不同规模和量纲的数据,使其缩放到相同的数据区间和范围,以减少规模.特征.分布差异等对模型的影响. ...

  8. python用merge匹配和左连接_左手用R右手Python系列——数据合并与追加

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 本文作者:天善智能社区专家杜雨 今天这篇跟大家介绍R语言 ...

  9. python json数据的文件读写操作

    python json数据的文件操作 代码 read_write_json.py #!/usr/bin/env python # -*- encoding: utf-8 -*- "" ...

  10. 为什么Python在数据科学领域比R更受欢迎呢?

    2020-02-16 12:32:00 全文共2256字,预计学习时长7分钟 来源:aliyun 新入门的数据科学家都面临一个非常重要的问题:我应该学习Python还是R? 这个问题非常重要,因为学习 ...

最新文章

  1. linux下查看当前用户的 三个命令
  2. 鸟哥的Linux私房菜(服务器)- 第二十章、WWW 伺服器
  3. 解决Extjs中Combobox显示值和真实值赋值问题
  4. class AbstractAPI(metaclass=AbstractAPIMeta):SyntaxError: invalid syntax
  5. 机器学习 | 特征缩放
  6. (王道408考研操作系统)第二章进程管理-第三节6:经典同步问题之生产者与消费者问题
  7. 进程的切换和系统的一般执行过程
  8. Xcode9安装插件,xcode9安装使用Alcatraz
  9. 【学习笔记】seckill-秒杀项目--(9)接口优化
  10. 一、Numpy-4.数组的运算
  11. Ubuntu系统如何搜索要安装的软件包
  12. ​ ViewBag​
  13. cesium图层管理
  14. Python:实现floor向下取整算法(附完整源码)
  15. ROS示例----导航功能包Husky_exploration
  16. html5手机号码数据类型,报手机号码的四种格式,你是哪种性格?
  17. 2020程序设计基础c语言答案,2020知到程序设计基础(C语言)入门篇答案全套
  18. Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)
  19. 周志华--机器学习原文 转自知乎
  20. 又是一年高考季,转眼间已经过去12年了

热门文章

  1. mysql 误删表怎么恢复_怎么恢复navicat删除的表
  2. 导航栏隐藏的正确方式
  3. 关于腾讯云短信sms接口自定义API写法 PHPdemo
  4. ios Segue传值
  5. 职场泥潭 | 这样的IT公司绝对不宜久留
  6. 计算机系军训口号四句霸气,军训口号四句霸气一班
  7. matlab资产配置,FOF投资的量化分析:资产配置模型
  8. 前端canvas制作微信小游戏(二)
  9. 什么是微信公众平台、微信开放平台?它们之间又有什么区别?
  10. 计算机acaa证书,ACAA 认证三维模型师