数据科学与SQL:组距分组分析 | 区间分布问题

目录

0 问题描述

1 数据准备

2 问题分析

3 小结


0 问题描述

绝对值分布分析也可以理解为组距分组分析。对于某个指标而言,一个记录对应的指标值的绝对值,肯定落在所有指标值的绝对值的最小值和最大值构成的区间内,根据一定的算法,在把这个区间划分为等距离的几个小区间,统计落入这些区间的指标值的绝对值的情况,决策者就可以得到指标值的绝对值在各个区间的分布情况。

以销售表为例,销售表如下:

销售信息样例表(Sales)
countrysale_monthsales_numbersales_value
USA    2008-01-011200500000
USA    2008-02-011150450000
USA    2008-03-011300520000
USA    2008-04-011280510000
USA    2008-05-011350530000
USA    2008-06-011400535000
USA    2008-07-011300510000
USA    2008-08-011250460000
USA    2008-09-011400530000
USA    2008-10-011380520000
USA    2008-11-011450540000
USA    2008-12-011500545000
USA    2009-01-011600550000
USA    2009-02-011390532000
USA    2009-03-011730570000
USA    2009-04-011900600000
USA    2009-05-011850585000
USA    2009-06-013800780000
USA    2009-07-011700560000
USA    2009-08-011490542000
USA    2009-09-011830580000
USA    2009-10-012000610000
USA    2009-11-011950595000
USA    2009-12-011900590000

1 数据准备

create table sales as
 select 'USA' country, '2008-01-01' sale_month, '1200' sales_number, '500000' sales_value union all
 select 'USA' country, '2008-02-01' sale_month, '1150' sales_number, '450000' sales_value union all
 select 'USA' country, '2008-03-01' sale_month, '1300' sales_number, '520000' sales_value union all
 select 'USA' country, '2008-04-01' sale_month, '1280' sales_number, '510000' sales_value union all
 select 'USA' country, '2008-05-01' sale_month, '1350' sales_number, '530000' sales_value union all
 select 'USA' country, '2008-06-01' sale_month, '1400' sales_number, '535000' sales_value union all
 select 'USA' country, '2008-07-01' sale_month, '1300' sales_number, '510000' sales_value union all
 select 'USA' country, '2008-08-01' sale_month, '1250' sales_number, '460000' sales_value union all
 select 'USA' country, '2008-09-01' sale_month, '1400' sales_number, '530000' sales_value union all
 select 'USA' country, '2008-10-01' sale_month, '1380' sales_number, '520000' sales_value union all
 select 'USA' country, '2008-11-01' sale_month, '1450' sales_number, '540000' sales_value union all
 select 'USA' country, '2008-12-01' sale_month, '1500' sales_number, '545000' sales_value union all
 select 'USA' country, '2009-01-01' sale_month, '1600' sales_number, '550000' sales_value union all
 select 'USA' country, '2009-02-01' sale_month, '1390' sales_number, '532000' sales_value union all
 select 'USA' country, '2009-03-01' sale_month, '1730' sales_number, '570000' sales_value union all
 select 'USA' country, '2009-04-01' sale_month, '1900' sales_number, '600000' sales_value union all
 select 'USA' country, '2009-05-01' sale_month, '1850' sales_number, '585000' sales_value union all
 select 'USA' country, '2009-06-01' sale_month, '3800' sales_number, '780000' sales_value union all
 select 'USA' country, '2009-07-01' sale_month, '1700' sales_number, '560000' sales_value union all
 select 'USA' country, '2009-08-01' sale_month, '1490' sales_number, '542000' sales_value union all
 select 'USA' country, '2009-09-01' sale_month, '1830' sales_number, '580000' sales_value union all
 select 'USA' country, '2009-10-01' sale_month, '2000' sales_number, '610000' sales_value union all
 select 'USA' country, '2009-11-01' sale_month, '1950' sales_number, '595000' sales_value union all
 select 'USA' country, '2009-12-01' sale_month, '1900' sales_number, '590000' sales_value
;

2 问题分析

第一步:按照给定的分组方法,计算区间开始,区间结束的值。计算区间范围维度表DIM

select group_num
     , min_num + group_step * pos       begin_num --区间开始
     , min_num + group_step * (pos + 1) end_num   --区间结束
     , pos
from (select pos
           , group_num
           , group_step
           , min_num
      from (select
                --分组方法
                CEIL(1 + LOG(10, count_num) / LOG(10, 2))                             group_num,
                --极差/组数 =组距
                CEIL((max_num - min_num) / CEIL(1 + LOG(10, count_num) / LOG(10, 2))) group_step,
                min_num
            from (SELECT MAX(sales_number) max_num,
                         MIN(sales_number) min_num,
                         COUNT(*)          COUNT_NUM
                  FROM sales) t) t
               lateral view posexplode(split(space(cast(group_num as int) - 1), space(1))) tmp as pos, value) t

 第二步:关联数据表SALES,计算落入区间范围的个数

with dim as (
select group_num
                  , min_num + group_step * pos       begin_num --区间开始
                  , min_num + group_step * (pos + 1) end_num   --区间结束
                  , pos
             from (select pos
                        , group_num
                        , group_step
                        , min_num
                   from (select
                             --分组方法
                             CEIL(1 + LOG(10, count_num) / LOG(10, 2))                             group_num,
                             --极差/组数 =组距
                             CEIL((max_num - min_num) / CEIL(1 + LOG(10, count_num) / LOG(10, 2))) group_step,
                             min_num
                         from (SELECT MAX(sales_number) max_num,
                                      MIN(sales_number) min_num,
                                      COUNT(*)          COUNT_NUM
                               FROM sales) t) t
                            lateral view posexplode(split(space(cast(group_num as int) - 1), space(1))) tmp as pos, value) t
             )


select concat_ws('-', cast(b.begin_num as string), cast(b.end_num as string)) group_name
     , count(*)                                                           cnt
from dim b
         left join sales a
WHERE a.sales_number >= b.begin_num
  AND a.sales_number < b.end_num
GROUP BY concat_ws('-', cast(b.begin_num as string), cast(b.end_num as string))

3 小结

组距分组是将全部变量值依次划分为若干个区间,并将这一区间的变量值作为一组。组距分组是数值型数据分组的基本形式。离散变量的整数值如果变动幅度较大,而且总体单位数N又很大,则也要进行组距分组。 在组距分组中,各组之间的取值界限称为组限,一个组的最小值称为下限,最大值称为上限;上限与下限的差值称为组距;上限与下限值的平均数称为组中值,它是一组变量值的代表值。 

具体步骤如下:

1. 确定组数。一组数据的组数一般与数据本身的特点及数据的多少有关。由于分组的目的之一是为了观察数据分布的特征,因此组数的多少应适中。如组数太少,数据的分布就会过于集中,组数太多,数据的分布就会过于分散,这都不便于观察数据分布的特征和规律。组数的确定应以能够显示数据的分布特征和规律为目的。

2.确定各组的组距。组距是一个组的上限与下限的差,可根据全部数据的最大值和最小值(即极差)及所分的组数来确定,即组距=(最大值-最小值)/组数。

3.根据分组整理成频数分布表。

 

如果您觉得本文还不错,对你有帮助,那么不妨可以关注一下我的数字化建设实践之路专栏,这里的内容会更精彩。

专栏 原价99,现在活动价59.9,按照阶梯式增长,还差5个人上升到69.9,最终恢复到原价

 

专栏优势:
(1)一次收费持续更新。

(2)实战中总结的SQL技巧,帮助SQLBOY 在SQL语言上有质的飞越,无论你应对业务难题及面试都会游刃有余【全网唯一讲SQL实战技巧,方法独特】

SQL很简单,可你却写不好?每天一点点,收获不止一点点-CSDN博客

(3)实战中数仓建模技巧总结,让你认识不一样的数仓。【数据建模+业务建模,不一样的认知体系】(如果只懂数据建模而不懂业务建模,数仓体系认知是不全面的)

(4)数字化建设当中遇到难题解决思路及问题思考。

我的专栏具体链接如下:

 数字化建设通关指南_莫叫石榴姐的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921420.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据调度组件之Apache DolphinScheduler

Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 主要特性 易于部署&#xff0c;提供四种部署方式&#xff0c;包括Standalone、Cluster、Docker和…

使用 前端技术 创建 QR 码生成器 API1

前言 QR码&#xff08;Quick Response Code&#xff09;是一种二维码&#xff0c;于1994年开发。它能快速存储和识别数据&#xff0c;包含黑白方块图案&#xff0c;常用于扫描获取信息。QR码具有高容错性和快速读取的优点&#xff0c;广泛应用于广告、支付、物流等领域。通过扫…

Hash table类算法【leetcode】

哈希表中关键码就是数组的索引下标&#xff0c;然后通过下标直接访问数组中的元素 那么哈希表能解决什么问题呢&#xff0c;一般哈希表都是用来快速判断一个元素是否出现集合里。 例如要查询一个名字是否在这所学校里。 要枚举的话时间复杂度是O(n)&#xff0c;但如果使用哈希…

UI自动化测试中公认最佳的设计模式-POM

一、概念 什么是POM&#xff1f; POM是PageObjectModule&#xff08;页面对象模式&#xff09;的缩写&#xff0c;其目的是为了Web UI测试创建对象库。在这种模式下&#xff0c;应用涉及的每一个页面应该定义为一个单独的类。类中应该包含此页面上的页面元素对象和处理这些元…

Elasticsearch客户端在和集群连接时,如何选择特定的节点执行请求的?

大家好&#xff0c;我是锋哥。今天分享关于【Elasticsearch客户端在和集群连接时&#xff0c;如何选择特定的节点执行请求的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Elasticsearch客户端在和集群连接时&#xff0c;如何选择特定的节点执行请求的&#xff1f; 100…

Python数据结构day2

一、链表 1.1目的 解决顺序表存储数据有上限&#xff0c;并且插入和删除操作效率低的问题 1.2概念 链表&#xff1a;链式存储的线性表&#xff0c;使用随机物理内存存储逻辑上连续的数据 链表的组成&#xff1a;由一个个结点组成 结点&#xff1a;由数据域和链接域组成&a…

【经纬度转地址实现方案】根据给定的经纬度,查询对应城市,通过建立经纬度geohash-行政区映射表,实现快速查询

文章目录 背景目标方案设计&#xff1a;表结构设计&#xff1a;方案实现1.高德API获取行政区边界点2.外包矩形中心作为中心点3.坐标点经纬度转换为geohash 测试建表语句测试造数测试用例测试结果 总结总结 背景 最近遇到一个需求&#xff0c;需要查询给定的经纬度坐标点&#…

解锁业务成功:大数据和 AI 如何协作以释放战略洞察

在当今这个数据主导的时代&#xff0c;大数据与AI的协同作用对于寻求竞争优势的组织而言愈发关键。大数据以其庞大的数据量、多样化的数据类型以及高速的数据生成能力&#xff0c;为AI算法提供了丰富的原材料&#xff0c;助力其挖掘出有价值的洞见&#xff0c;推动明智决策的制…

LINUX系统编程之——环境变量

目录 环境变量 1、基本概念 2、查看环境变量的方法 三、查看PATH环境变量的內容 1&#xff09;不带路径也能运行的自己的程序 a、将自己的程序直接添加到PATH指定的路径下 b、将程序所在的路径添加到PATH环境中 四、环境变量与本地变量 1、本地变量创建 2、环境变量创…

QT:QListView实现table自定义代理

介绍 QListVIew有两种切换形式&#xff0c;QListView::IconMode和QListView::ListMode&#xff0c;通过setViewMode()进行设置切换。因为QListView可以像QTreeView一样显示树形结构&#xff0c;也可以分成多列。这次目标是将ListView的ListMode形态显示为table。使用代理&…

IDEA2023 创建SpringBoot项目(一)

一、Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 二、快速开发 1.打开IDEA选择 File->New->Project 2、…

初级数据结构——树

目录 前言一、树的基本概念二、二叉树三、树的表示方法四、树的遍历树的代码模版五、经典例题[2236. 判断根结点是否等于子结点之和](https://leetcode.cn/problems/root-equals-sum-of-children/description/)代码题解 六、总结结语 前言 从这一期开始数据结构开始有那么一点…

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色,类似材质丢失

Unity 编辑器下 Android 平台 Addressable 加载模型粉红色&#xff0c;类似材质丢失 Addressable Play Mode Script加载模式 选择 Use Existiing Build 1.Unity 切换到 PC 平台&#xff0c;执行 Addressable Build 运行&#xff0c;加载 bundle 内的预制体 显示正常 2.Unit…

视频去重工具

视频去重工具 工具截图 下载 回复&#xff1a;“0028”&#xff0c;即可自动获取

javascrip页面交互

元素的三大系列 offset系列 offset初相识 offset系列属性 作用 element.offsetParent 返回作为该元素带有定位的父级元素&#xff0c;如果父级没有定位&#xff0c;则返回body element.offsetTop 返回元素相对于有定位父元素上方的偏移量 element.offsetLeft 返回元素…

win10中使用ffmpeg和MediaMTX 推流rtsp视频

在win10上测试下ffmpeg推流rtsp视频&#xff0c;需要同时用到流媒体服务器MediaMTX 。ffmpeg推流到流媒体服务器MediaMTX &#xff0c;其他客户端从流媒体服务器拉流。 步骤如下&#xff1a; 1 下载MediaMTX github: Release v1.9.3 bluenviron/mediamtx GitHub​​​​​…

el-select 和el-tree二次封装

前言 本文章是本人在开发过程中&#xff0c;遇到使用树形数据&#xff0c;动态单选或多选的需求&#xff0c;element中没有这种组件&#xff0c;故自己封装一个&#xff0c;欢迎多多指教 开发环境&#xff1a;element-UI、vue2 组件效果 单选 多选 组件引用 <treeselec…

STM32-- keil常见报错与解决办法

调试问题 1. keil在线调试需要点击好几次运行才可以运行&#xff0c;要是直接下载程序直接就不运行。 解决&#xff1a;target里面的use microlib要勾选&#xff0c;因为使用了printf。 keil在线调试STM32&#xff0c;点三次运行才能跑到main的问题解决。 keil在线调试STM32…

RNN简单理解;为什么出现Transformer:传统RNN的问题;Attention(注意力机制)和Self-Attention(自注意力机制)区别;

目录 RNN简单理解 RNN n to n Transformer N to M LSTM 为什么出现Transformer:传统RNN的问题 信息丢失的后果 Rnn是顺序执行的效率不高:顺序执行 Attention(注意力机制)和Self-Attention(自注意力机制)区别 一、计算对象不同 二、应用场景不同 三、功能差异…

51c深度学习~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」&#xff0c;主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…