首页 > 其他分享 >Hive学习笔记:实现Pandas.describe描述统计

Hive学习笔记:实现Pandas.describe描述统计

时间:2022-11-20 00:12:27浏览次数:82  
标签:approx name describe Hive col percentile data 描述统计

Python 中,利用 Pandas.describe() 可以很方便的观测某一列的数量、最小值、均值、最大值、分位数等。

pd.series.describe(percentiles=[0.05,0.25,0.3,0.7,0.8])

具体可参考文章:Python学习笔记:描述性统计describe

有时候,数据存放在数据库,例如:Hive 中,并不方便导出来利用 Python 进行统计分析。

遂诞生一个想法:自己写一个类似统计的脚本。

说开干即开干!

一、分布函数

-- 查看分布
select count(1) as data_cnt,
       avg(col_name) as avg_value,
       stddev(col_name) as stddev_value, -- 标准差
       min(col_name) as min_value,
       percentile_approx(col_name, 0.1) as data_1,
       percentile_approx(col_name, 0.2) as data_2,
       percentile_approx(col_name, 0.3) as data_3,
       percentile_approx(col_name, 0.4) as data_4,
       percentile_approx(col_name, 0.5) as data_5,
       percentile_approx(col_name, 0.6) as data_6,
       percentile_approx(col_name, 0.7) as data_7,
       percentile_approx(col_name, 0.8) as data_8,
       percentile_approx(col_name, 0.9) as data_9,
       percentile_approx(col_name, 0.91) as data_91,
       percentile_approx(col_name, 0.92) as data_92,
       percentile_approx(col_name, 0.93) as data_93,
       percentile_approx(col_name, 0.94) as data_94,
       percentile_approx(col_name, 0.95) as data_95,
       percentile_approx(col_name, 0.96) as data_96,
       percentile_approx(col_name, 0.97) as data_97,
       percentile_approx(col_name, 0.98) as data_98,
       percentile_approx(col_name, 0.99) as data_99,
       max(col_name) as max_value
from table_name;

二、分位数计算

Hive 中可以利用 percentilepercentile_approx 两个函数计算分位数。

1.percentile

percentile(col, p) 只支持整型(int),p 的取值为 0-1,若为0.5,即中位数。

2.percentile_approx

percentile_approx(col, p) 支持多种数据类型,包括浮点数。

percentile_approx 还有一种形式 percentile_approx(col, p, B),参数B控制内存消耗的近似精度,B越大,结果的精度越高。

默认值为10000。当 col 字段中的 distinct 值的个数小于B时,结果就为准确的百分位数。

当需要统计多个分位数时,可以传入一个数组的参数,例如:array(p1, p2, p3) 即可。

percentile_approx(cast(col as double), array(0.05, 0.5, 0.95), 9999)

其输出结果为数组的形式,需要进一步处理。

explode(percentile_approx(cast(col as double), array(0.05, 0.5, 0.95), 9999)) as percentile

三、优化后的方法

-- 查看分布
select explode(percentile_approx(cast(col as double), array(0.05, 0.5, 0.95), 9999)) as percentile
from table_name;

参考链接:【Hive】计算分位数

参考链接:hive计算分位数

标签:approx,name,describe,Hive,col,percentile,data,描述统计
From: https://www.cnblogs.com/hider/p/16907592.html

相关文章

  • Hive学习笔记:with as子查询
    一、说明与其他SQL语法类似,Hive中也支持withas将一大段SQL语句封装为子查询,方便后续多次调用。MySQL旧版本不支持withas语法,8.0才支持。withttas( selec......
  • Hive学习笔记:字符串拼接
    工作中需要合并区号与号码,因两个字段均为数值,无法直接使用“+”进行拼接,需要通过其他方法。一、concat拼接concat将多个字段(字段类型可不相同)拼接起来。使用语法为:-......
  • hive 求各直播间同时在线最大人数
    需求描述需求有以下数据createtabletemp_online_data(room_idvarchar(2)comment'直播间ID',anchor_idvarchar(5)comment'播主ID',start_ti......
  • Hive2Mysql
    #!/bin/bashset-ebin=`dirname"$0"`bin=`cd$bin;pwd`functionusage(){echoecho"Usage:-f:必选,执行文件的路径文件内容:-h必选,mysqlhost-P......
  • python连接hive
    安装"""pipinstallpyhs2等待这个模块安装完成之后不要关闭命令行,接着在新的一行去执行命令。此时这个命令的作用是开启hive服务,否则python程序无法成功连接,命令如下:......
  • 聊聊Hive数据血缘——从Atlas没有列级血缘的Bug讲起
    前几天,Datahub提供了最新的字段级别数据血缘功能,很多朋友迫不及待想对比一下Datahub的字段级血缘与Atlas的区别。这个时候问题来了,在Atlas收集Hive血缘的时候,由于部分版本......
  • (转)hive中NULL值问题
    原文:https://blog.csdn.net/jiguanglong/article/details/106427078问题描述源端数据oracle数据库,通过cdm迁移工具将数据迁移到目标端hive。在oracle中的NULL值迁移到hive......
  • 【Spark】java.lang.NoSuchMethodException: org.apache.hadoop.hive.ql.metadata.Hiv
    2/11/1419:02:23ERROR[main]SparkUncaughtExceptionHandler:UncaughtexceptioninthreadThread[main,5,main]java.lang.NoSuchMethodException:org.apache.hado......
  • Hive查询的18种方式,你都学会了吗?
    持之以恒,贵在坚持,每天进步一点点!前言        大家一定对Hive不陌生吧!Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查......
  • Hive的简单介绍与使用
    hive入门1.Hive概述1.1什么是HiveHive:由Facebook开源用于解决海量结构化日志的数据统计工具。Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张......