一.項目背景
中位數是數理統計中一個重要的指標,它可以自動忽略數據極差帶來的影響,
能夠很好的評估數據,在數理統計中很常用。本文主要介紹在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文章
802瀏覽量
26452 -
python
+關注
關注
56文章
4783瀏覽量
84473 -
位數
+關注
關注
0文章
3瀏覽量
2373
發布評論請先 登錄
相關推薦
TC377波特率計算是否與幀大小有關?
brZ 如圖 471 所示,
我想知道這個波特率計算是否與幀大小有關? 例如,4 位幀、8 位幀、32 位幀?波特率是指一幀/秒嗎? 對于 32 位幀,它是 32 位/秒?
發表于 01-22 06:29
ads1256有效位數怎么計算?
您好,對于ADS1256有效位數的計算,數據手冊給出的測試公式是怎么推到出來的呢?能夠幫我推到出來嗎?對于第一張圖中rms的計算是怎么出來的?
發表于 11-22 07:07
有關中斷代碼的疑問
有關中斷代碼的疑問當我用op_intrpt_schedule_self(time,code)時,這個中斷碼是不是自己隨便定義的啊,隨便是整型數幾都可以?以前一直這么理解的,但結果一直不對,仔細看才
發表于 06-14 18:01
邊緣計算是指什么?邊緣計算的最大優勢是什么
邊緣計算是指在生成或收集物聯網(IoT)數據的網絡“邊緣”處或附近發生的處理。結合使用邊緣計算和邊緣分析(包括人工智能和機器學習)的公司,可以獲取有價值的實時洞察,從而獲得競爭優勢?! ∵吘?/div>
發表于 07-12 07:18
量子計算是什么
量子計算是一種遵循量子力學規律調控量子信息單元進行計算的新型計算模式。對照于傳統的通用計算機,其理論模型是通用圖靈機;通用的量子計算機,其理
邊緣計算是什么?與ARM和云計算有什么關系
提到邊緣計算就不得不提一下云計算。所謂的云計算是指的是通過網絡“云”,將龐大的數據處理程序被分解成無數的小程序,然后由多個服務器組成的系統對結果進行處理和分析,并返回給用戶。在云計算的
AI邊緣計算是什么,為什么5G的發展離不開它
邊緣計算是云計算的補充和優化。如果說云計算是“云”化的數據集中處理,那么邊緣計算可以理解為在邊緣和靠近終端(如屏幕、傳感器等智能設備)的位置進行數據處理。在許多情況下,邊緣
發表于 05-07 17:30
?502次閱讀
邊緣計算是個啥東西
在互聯網時代,每天都有新的概念誕生。就像今天提到的邊緣計算。邊緣計算,與云計算,是同一個體系下的相對概念。他們的標準化概念各位可以自行百度,通俗的來講,云計算是公用大腦,邊緣
發表于 05-18 14:44
?0次下載
AI邊緣計算是什么意思?邊緣ai是什么?AI邊緣計算應用
AI邊緣計算是什么意思?邊緣ai是什么?AI邊緣計算應用? 隨著人工智能技術的不斷發展,邊緣計算作為一種新型的計算模式逐漸成為熱門話題。AI邊緣計算
SOLIDWORKS仿真計算是什么意思?
SOLIDWORKS仿真計算是指利用SOLIDWORKS軟件進行工程設計和分析時所使用的計算方法和技術。SOLIDWORKS是一款流行的三維計算機輔助設計(CAD)軟件,它提供了豐富的工具和功能,使工程師能夠創建和模擬各種產品和
評論