ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用 Python 和 Clickhouse 采样进行大型数据集可视化分析

2022-09-10 02:02:02  阅读:247  来源: 互联网

标签:采样 Python 图表 直方图 可视化 数据 我们 Clickhouse


Visual data analysis with Python and Clickhouse sampling

使用 Python 和 Clickhouse 采样进行大型数据集可视化分析

当您使用 Clickhouse 时,通常意味着使用(至少)数十亿个数据点。同时 Python 数据分析工具(包括 Matplotlib)通常使用内存数据集。为了从 2 个世界中获得最佳效果,我们可以使用强大的 Clickhouse 采样 功能,让我们看看如何做到这一点。

Clickhouse 数据集

我们有一个包含 2 列和 10 亿行的示例表:

 CREATE TABLE default.data (`x` UInt32, `y` UInt32)  
 ENGINE = MergeTree ORDER BY cityHash64(x) SAMPLE BY cityHash64(x)

如您所见,我们有 启用采样 因为我们需要它来做基于 Python 和 Matplotlib 的可视化分析。

自从我们的桌子在[ 7.5G](https://onelinerhub.com/clickhouse/get-table-size) 在尺寸方面 ,无法放入我们的机器RAM,我们将根据采样数据进行分析。让我们根据 Matplotlib 中流行的数据分析图表来探索一下。

散点图

该图表允许查看两个值集(表列)之间是否存在任何可见的线性相关性。我们正好有 2 列要分析,所以让我们从这张图表开始。

采样数据

由于我们有太多的数据点( 1b 表中的行)以适合单个图表,让我们对数据进行采样:

在这里,我们要求 Clickhouse 只使用 0.0001% 的数据将产生几乎 1000 要点:

在这里我们可以看到,我们的 是的 列具有可见的线性依赖于 X 柱子。我们只使用了一小部分数据来找出答案。

非抽样数据

为什么我们关心采样呢?即使我们有无限的内存,太多的数据也会花费太多的时间来处理和可视化。例如,让我们在 0.1% 数据样本(即 1000 比我们使用的初始样本大几倍):

 ...  
 rows = client.execute('SELECT x,y FROM data **样品 0.001** ')  
 ...

首先,我们不得不等待 21 秒得到结果:

图表——只是我们初始正确采样图表的一个非常“抗锯齿”版本:

这甚至不接近未采样的数据集。我只是没有那么强大的机器来处理完整的数据集,但很明显, 需要几个小时 在没有任何好处的情况下完成。

良好的采样

因此,抽样为我们节省了时间,并且仍然可以对我们的数据性质做出有价值的结论。

如何选择合适的样本量?这取决于我们要探索的图表。散点图是一团点云,所以有成百上千个点的东西很酷。

样本太少可能会产生误导或毫无意义。例如 从数据中选择 x,y **样品 0.00000001** 会给我们:

这在视觉分析方面没有价值。

直方图

与散点图不同,直方图允许我们估计单个值集(单个表列)内的值分布。让我们为我们的构建直方图 是的 柱子:

在这里,我们使用了 0.001% 建立直方图的样本:

我们可以看到,这个数量 是的 列值大于 2*10^8 正在下降。就本专栏的性质而言,这可能是有价值的见解。同时, X 列均匀分布:

直方图的样本量应该大​​于散点图的样本量,因为我们计算了有限数量的 bin 内的条目数。数万行的样本应该没问题,但如果需要可以更大。

箱形图

这张图表, 在这里解释 ,可以快速显示一个值集(单表列)的主要分布特征:

让我们为我们的两列构建箱线图:

再次,我们可以看到 是的 列值倾向于较小的值(指向底部)。这里的样本大小规则与直方图相同,样本中的数万行或更大的行很酷。

概括

利用 Clickhouse 采样 对于大表使用 Python 可视化分析工具,例如 Matplotlib:

 从 clickhouse_driver 导入客户端  
 客户端=客户端(主机='本地主机')  
 rows = client.execute('SELECT x,y FROM data **样品 0.00001** ') x = []  
 对于行中的行:  
 x.append(行[0]) 将 matplotlib.pyplot 导入为 plt  
 plt.hist(x, bins=100)  
 plt.show()

这将节省您的时间并允许使用“超出 RAM”大小的数据集。调整不同图表的样本大小,以确保获得可靠的结果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/23548/25231001

标签:采样,Python,图表,直方图,可视化,数据,我们,Clickhouse
来源: https://www.cnblogs.com/amboke/p/16675880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有