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

news2024/11/23 20:11:45

目录

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博客 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时&#xff0c;复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱&#xff0c;还是推荐引擎中海量的数据量&#xff0c;处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时&#xff0c;…

23种设计模式-模板方法(Template Method)设计模式

文章目录 一.什么是模板方法模式&#xff1f;二.模板方法模式的特点三.模板方法模式的结构四.模板方法模式的应用场景五.模板方法模式的优缺点六.模板方法模式的C实现七.模板方法模式的JAVA实现八.代码解析九.总结 类图&#xff1a; 模板方法设计模式类图 一.什么是模板方法模…

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明&#xff0c; 将Form的属性Opacity&#xff0c;由默认的100% 调整到 80%(尽量别低于50%)&#xff0c;这个数字越小越透明&#xff01; 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&#xff0c;窗体出现在屏幕…

DRNN 神经网络的Jacobian 信息辨识

DRNN 神经网络的 Jacobian 信息辨识 1. 基本原理 Jacobian 矩阵用于描述多输入多输出系统中输入和输出之间的偏导关系&#xff0c;其形式为&#xff1a; 对于 DRNN&#xff08;Dynamic Recurrent Neural Network&#xff09;&#xff0c;其动态特性使得 y(t)\mathbf{y}(t)y(t…

iptables网络安全服务详细使用

iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld&#xff08;zone&#xff09; iptables主要工作在OSI七层的二、三、四层&#xff0c;如果重新编译内核&…

《DAMA 数据管理知识体系指南》读书笔记 - 第 2 章 数据处理伦理

文章目录 1. 章节概述2. 核心概念与定义3. 重要方法与实践步骤4. 理论与实际结合5. 重点6. 理解与记忆要点7. 复习思考题标题图——书籍图片 WPS AI生成的XMind链接&#xff08;不用要源文件&#xff0c;下载不了&#xff09;&#xff1a; 【金山文档 | WPS云文档】 第2章 数据…

《线性代数的本质》

之前收藏的一门课&#xff0c;刚好期末复习&#xff0c;顺便看一看哈哈 课程链接&#xff1a;【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量&#xff0c;需要先明白什么是向量 不同专业对向量的看法 物理专…

AI 大模型如何重塑软件开发流程?——技术革新与未来展望

人工智能的蓬勃发展为许多领域注入了强劲动力&#xff0c;而在软件开发这一关键技术领域&#xff0c;AI 大模型的应用正在彻底改变传统流程。从代码自动生成到智能测试&#xff0c;再到协同开发和流程优化&#xff0c;AI 正逐步成为软件开发者的得力助手&#xff0c;也推动企业…

三季度业绩亮点多元,宝尊全域经营走向破茧成蝶

电商行业的变革从未停止&#xff0c;始终反映着网络消费和品牌发展的趋势&#xff0c;以及未来的想象空间&#xff0c;因此令赛道上的相关公司备受关注。 那么&#xff0c;当前赛道正在发生哪些变化&#xff1f;11月21日&#xff0c;行业龙头宝尊电商发布截至2024年9月30日的2…

机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合 1.欠拟合 模型在训练数据上表现不佳&#xff0c;在新的数据上也表现不佳&#xff0c;常发生在模型过于简单无法处理数据中的复杂模式时。 特征&#xff1a; 训练误差较高 测试误差也高 模型过于简化&#xff0c;不能充分学习训练数据中的模式 2.过拟合 …

【云计算】腾讯云架构高级工程师认证TCP--考纲例题,知识点总结

【云计算】腾讯云架构高级工程师认证TCCP–知识点总结&#xff0c;排版整理 文章目录 1、云计算架构概论1.1 五大版块知识点&#xff08;架构设计&#xff0c;基础服务&#xff0c;高阶技术&#xff0c;安全&#xff0c;上云&#xff09;1.2 课程详细目录1.3 云基础架构设计1.4…

proto3语法详解

proto3语法详解 字段规则消息类型的定义与使⽤定义使用 enum类型定义与使用定义规则定义时注意事项 Any类型Any类型介绍Any类型使用 oneof类型oneof类型的介绍oneof类型的使用 map类型map类型的介绍map类型的使用 默认值更新消息更新规则保留字段reserved 未知字段未知字段获取…

【STM32】在 STM32 USB 设备库添加新的设备类

说实话&#xff0c;我非常想吐槽 STM32 的 USB device library&#xff0c;总感觉很混乱。 USB Device library architecture 根据架构图&#xff1a; Adding a custom class 如果你想添加新的设备类&#xff0c;必须修改的文件有 usbd_desc.cusbd_conf.cusb_device.c 需要…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境&#xff0c;我使用的环境是VMware16ubuntu20.04&#xff0c;如图1所示安装编译所需的依赖包&#xff1b; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

神经网络问题之一:梯度消失(Vanishing Gradient)

梯度消失&#xff08;Vanishing Gradient&#xff09;问题是深度神经网络训练中的一个关键问题&#xff0c;它主要发生在反向传播过程中&#xff0c;导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞&#xff0c;严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…

JavaWeb之综合案例

前言 这一节讲一个案例 1. 环境搭建 然后就是把这些数据全部用到sql语句中执行 2.查询所有-后台&前台 我们先写后台代码 2.1 后台 2.2 Dao BrandMapper&#xff1a; 注意因为数据库里面的名称是下划线分割的&#xff0c;我们类里面是驼峰的&#xff0c;所以要映射 …

PLC与PLC跨网段通讯的几种方法:厂区组网实践

PLC通常通过以太网或其他工业网络协议&#xff08;如PROFINET、Modbus TCP等&#xff09;进行通信。当PLC位于不同的网段时&#xff0c;它们不能直接通信&#xff0c;需要特殊的配置或设备来实现通信&#xff0c;不同网段的PLC通讯变得尤为重要。 随着工业网络的发展和工业4.0概…

原生openGauss与Oracle数据库函数兼容性对比验证测试

———————————————— 一、测试目的 近期在进行调研去O,为此研究了下原生openGauss和Oracle数据库兼容性&#xff0c;特整理测试了Oracle常用函数和openGauss数据库的对比测试。 二、创建DUAL虚拟表 openGauss 数据库不提供DUAL虚拟表&#xff0c;需要通过如下方…

创建HTTPS网站

每天&#xff0c;我们都会听到网络上发生身份盗窃和数据侵权的案例&#xff0c;这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词&#xff1a;HTTP与HT…

Bokeh实现大规模数据可视化的最佳实践

目录 引言 一、Bokeh简介 二、安装Bokeh 三、数据准备 四、性能优化 五、创建图表 六、添加交互功能 七、应用案例 八、高级技巧 九、总结 引言 在数据科学领域,数据可视化是一个至关重要的环节。通过可视化,我们可以直观地理解数据的特征和趋势,为数据分析和决策…