Hive学习笔记:实现Pandas.describe描述统计
在 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
中可以利用 percentile
和 percentile_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计算分位数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)