Hive Percentile——分位數的計算

一、什麼是分位數

分位數(Quantile)是一個更具體的概率分布的特殊點。分位數將我們的數據集、數值或概率分布分成若干份,每一份都包含了統計意義上的相同比例的數據。

比如,第25分位數(第一四分位數,Q1)就是將數據或概率分布分成4份,每一份都包含了整個數據或概率分布中25%的數據。

hive的percentile()函數能夠方便地計算分位數。

SELECT percentile(age, 0.25) FROM user;

以上的函數將查詢user表中年齡的第一四分位數。

二、如何使用hive percentile

hive percentile()函數常用的語法如下:

percentile(expr, pct)

expr是要處理的欄位名或者是表達式,pct是0到1之間的百分比。

對於一個expr序列,pct指定一個值,該值在expr序列中有比它小的值的比例為pct。

三、hive percentile的計算方式

hive percentile的計算公式如下:

percentile(expr, pct)       ├──  如果expr全為NULL,則返回NULL
                            ├──  否則,所有expr值都將載入到內存中
                            ├──  如果pct小於0或大於1,則返回NULL
                            ├──  如果只有一個expr值,返回該值
                            ├──  對於pct小於1的,排除NULL後,將expr值升序排列
                            ├──  對於pct為1,排除NULL後,將expr值降序排列
                            ├──  計算rank=floor(pct*(count-1))
                            └──  對於pct小於1的,返回排在排好序的結果中第rank個不是NULL的值。對於pct為1,返回排好序的結果中倒數第rank個不是NULL的值

四、hive percentile的示例

示例1:計算乘客年齡分位數

計算Titanic數據集中乘客年齡的中位數、四分位數和十分位數:

-- CREATE TABLE passengers(age INT, name STRING);

-- Load data:
LOAD DATA LOCAL INPATH '/path/to/titanic.csv' INTO TABLE passengers;

-- 查看中位數
SELECT percentile(age, 0.5) FROM passengers;

-- 查看四分位數
SELECT percentile(age, 0.25), percentile(age, 0.5), percentile(age, 0.75) FROM passengers;

-- 查看十分位數
SELECT percentile(age, 0.1) AS P10, percentile(age, 0.2) AS P20, percentile(age, 0.3) AS P30, percentile(age, 0.4) AS P40, percentile(age, 0.5) AS P50, percentile(age, 0.6) AS P60, percentile(age, 0.7) AS P70, percentile(age, 0.8) AS P80, percentile(age, 0.9) AS P90 FROM passengers;

示例2:計算 sales 表的 95th百分位數 (即P95)

在 sales 表的 amount 欄位中查找第95個百分數值的數值,即P95:

SELECT percentile(amount, 0.95) as P95 FROM sales;

示例3:計算sales表中欄位price的75th百分位數 (即P75)

計算sales表中欄位price的75th百分位數 (即P75)

SELECT percentile(price, 0.75) as P75 FROM sales;

五、總結

hive percentile函數可以非常方便地計算分位數,只需要指定想得到的分位數比例,就可以得到對應的數值。

在數據分析、數據可視化等領域,分位數是一個非常重要的指標。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244891.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:04
下一篇 2024-12-12 13:04

相關推薦

  • Python給定一個正整數,請計算二進位中為1的位數

    本文介紹如何使用Python計算一個正整數在二進位下有多少個1。 一、初識二進位 計算一個正整數在二進位下有多少個1,必須先了解二進位的概念。二進位是計算機中數字的一種表示方式,只…

    編程 2025-04-27
  • Python判斷數字位數的方法

    本文將從多個方面介紹python判斷數字位數的方法。 一、字元串長度法 可以將數字轉換成字元串,然後使用len函數來求字元串的長度,從而判斷數字的位數。 num = 123456 …

    編程 2025-04-27
  • Hive Beeline連接報錯Connection Reset的解決方法

    對於Hive Beeline連接報錯Connection Reset,可以從以下幾個方面進行詳細解答。 一、檢查網路連接 首先需要檢查機器與網路連接是否穩定,可以Ping一下要連接…

    編程 2025-04-27
  • 如何刪除Hive的元數據統計信息

    本文將從以下幾個方面詳細闡述如何刪除Hive的元數據統計信息。 一、元數據統計信息是什麼? 元數據統計信息是相應數據表的統計信息,包括數據的行數、BLK(塊)和文件大小等。 Hiv…

    編程 2025-04-27
  • Hive解析JSON詳解

    一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,具有結構清晰、易於讀寫、便於解析等特點。它基於JavaScript的一…

    編程 2025-04-25
  • Hive Trim的詳解

    一、Trim基礎知識 字元串的空白字元是指包含空格、製表符和換行符等字元。這些字元有可能需要從字元串的開頭或結尾刪除。Hive的Trim函數就是完成這種操作。 Trim函數是一種函…

    編程 2025-04-25
  • Hive Coalesce函數的全面解析

    一、Coalesce函數的基本介紹 在Hive中,Coalesce函數用於返回參數列表中的第一個非NULL值。Coalesce函數需要至少兩個參數。如果所有參數都是NULL,函數則…

    編程 2025-04-25
  • Hive ABS詳解

    一、概述 Hive ABS是基於Hadoop和Apache Hive構建的分散式運算框架,具有高性能和高可擴展性。ABS全稱為Accelerated Big Data System…

    編程 2025-04-25
  • Hive排序詳解

    一、排序基礎 1、什麼是排序 排序是將一組數據按照某一特定規則進行排列的過程,使得每個數據都按照一定的順序存儲和訪問。 2、排序方式 2.1、內部排序 內部排序指全部數據都能夠載入…

    編程 2025-04-25
  • Hive -f的完整指南

    一、什麼是hive -f Hive是一個基於Hadoop的數據倉庫工具,允許用戶使用類SQL的語言HiveQL來處理存儲在Hadoop集群中的數據。Hive -f是Hive命令行工…

    編程 2025-04-24

發表回復

登錄後才能評論