一.项目背景
中位数是数理统计中一个重要的指标,它可以自动忽略数据极差带来的影响,
能够很好的评估数据,在数理统计中很常用。本文主要介绍在Python中和Mysql
中如何来求中位数,重点让大家掌握SQL计算中位数,也是面试常考题目之一。
二.实现过程
1.Python实现
》》创建DataFrame
》》分组计算中位数
import pandas as pd
#创建DataFrame
data=pd.DataFrame(
{ 'company':['A','A','A','A','B','B','B','B','B'],
'salary':[1057,1874,2059,2268,6587,6637,6932,7415,7654]
})
#输出分组统计值
print(data.groupby('company')['salary'].median().reset_index().rename({'salary':'median_salary'},axis=1))
2.SQL实现
》》统计字段长度
》》按照奇偶长度分别计算字段一半
》》按照字段排序统计顺序
》》筛选所需字段并计算
建表语句:
mysql> create table median_val(
-> company varchar(20),
-> salary int)
-> engine=innodb default charset=utf8;
Query OK, 0 rows affected, 1 warning (0.07 sec)
插入数据:
mysql> insert into median_val(company,salary) values("A",1057),("A",1874),("A",2059),("A",2268),("B",7415),("B",7654),("B",6932),("B",6587),("B",6637);
Query OK, 9 rows affected (0.06 sec)
Records: 9 Duplicates: 0 Warnings: 0
计算中位数:
mysql> select
-> company,
-> round(avg(salary),1) as median_salary
-> from
-> (select
-> company,
-> salary,
-> count(*) over(partition by company) as num_length,
-> row_number() over(partition by company order by salary) as ranking,
-> count(*) over(partition by company) /2 as num_company_even,
-> ceil(count(*) over(partition by company) /2) as num_company_odd
-> from
-> median_val)a
-> where
-> (mod(num_length,2)=0 and ranking in (num_length/2,num_length/2+1))
-> or
-> (mod(num_length,2)=1 and ranking=ceil(num_length/2))
-> group by
-> company;
+---------+---------------+
| company | median_salary |
+---------+---------------+
| A | 1966.5 |
| B | 6932.0 |
+---------+---------------+
2 rows in set (0.00 sec)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
MySQL
+关注
关注
1文章
799浏览量
26406 -
python
+关注
关注
55文章
4777浏览量
84397 -
位数
+关注
关注
0文章
2浏览量
2366
发布评论请先 登录
相关推荐
TC377波特率计算是否与帧大小有关?
brZ 如图 471 所示,
我想知道这个波特率计算是否与帧大小有关? 例如,4 位帧、8 位帧、32 位帧?波特率是指一帧/秒吗? 对于 32 位帧,它是 32 位/秒?
发表于 01-22 06:29
有关中断代码的疑问
有关中断代码的疑问当我用op_intrpt_schedule_self(time,code)时,这个中断码是不是自己随便定义的啊,随便是整型数几都可以?以前一直这么理解的,但结果一直不对,仔细看才
发表于 06-14 18:01
边缘计算是指什么?边缘计算的最大优势是什么
边缘计算是指在生成或收集物联网(IoT)数据的网络“边缘”处或附近发生的处理。结合使用边缘计算和边缘分析(包括人工智能和机器学习)的公司,可以获取有价值的实时洞察,从而获得竞争优势。 边缘
发表于 07-12 07:18
量子计算是什么
量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。对照于传统的通用计算机,其理论模型是通用图灵机;通用的量子计算机,其理
边缘计算是什么?与ARM和云计算有什么关系
提到边缘计算就不得不提一下云计算。所谓的云计算是指的是通过网络“云”,将庞大的数据处理程序被分解成无数的小程序,然后由多个服务器组成的系统对结果进行处理和分析,并返回给用户。在云计算的
AI边缘计算是什么,为什么5G的发展离不开它
边缘计算是云计算的补充和优化。如果说云计算是“云”化的数据集中处理,那么边缘计算可以理解为在边缘和靠近终端(如屏幕、传感器等智能设备)的位置进行数据处理。在许多情况下,边缘
发表于 05-07 17:30
•498次阅读
边缘计算是个啥东西
在互联网时代,每天都有新的概念诞生。就像今天提到的边缘计算。边缘计算,与云计算,是同一个体系下的相对概念。他们的标准化概念各位可以自行百度,通俗的来讲,云计算是公用大脑,边缘
发表于 05-18 14:44
•0次下载
AI边缘计算是什么意思?边缘ai是什么?AI边缘计算应用
AI边缘计算是什么意思?边缘ai是什么?AI边缘计算应用 随着人工智能技术的不断发展,边缘计算作为一种新型的计算模式逐渐成为热门话题。AI边缘计算
SOLIDWORKS仿真计算是什么意思?
SOLIDWORKS仿真计算是指利用SOLIDWORKS软件进行工程设计和分析时所使用的计算方法和技术。SOLIDWORKS是一款流行的三维计算机辅助设计(CAD)软件,它提供了丰富的工具和功能,使工程师能够创建和模拟各种产品和
评论