《Python和HDF 5大数据应用》——1.2 HDF5到底是什么

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

本节书摘来自异步社区《Python和HDF 5大数据应用》一书中的第1章,第1.2节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 HDF5到底是什么

HDF5是一种存储相同类型数值的大数组的机制,适用于可被层次性组织且数据集需要被元数据标记的数据模型。

它跟SQL风格的关系型数据库区别相当大,HDF5在组织结构方面有一些特殊的技巧(第8章中有一个例子)。如果你需要在多个表上保持关系,或者想要在数据上进行JOIN,那么一个关系型数据库可能更适合你。又或者你需要在一台没有安装HDF5的机器上读取一个小型的1维数据集,那么CSV这样的文本格式是更合理的选择。

但如果你需要处理多维数组,对性能有非常高的要求,需要在数据集上支持子集分片和部分I/O,需要用特征来给数据集做标记,对关系型特性没有要求,那么HDF5就是完美的选择。

那么说到底,“HDF5”究竟是指什么?我确信它包含下面3点:

1.一种文件规格及相关的数据模型;

2.一个可被C、C++、Java,Python以及其他语言使用的API标准库;

3.一个软件生态系统,由使用HDF5的客户程序以及MATLAB、IDL和Python等“分析平台”组成。

1.2.1 HDF5文件规格

你已经在上面的例子见到HDF5数据模型的三大要素:

数据集:一种数组型对象,在磁盘上保存数值类型的数据;

:层次性容器,可以包含数据集和子组;

特征:自定义元数据信息,可被附加在数据集(以及组!)上。

用户可以使用这些基本抽象构建适合自己问题域的应用格式。比如,我们之前的气象站代码为每个气象站分了一个组,为每个测量参数分配一个数据集,并附加了一些特征以描述数据集的额外信息。这种统一使用“格式内格式”来决定如何用组、数据集和特征来保存信息的方式在实验室或者其他机构中是非常普遍的。

既然HDF5处理一切如“endian”的跨平台问题,数据的分享就只需要对组、数据集和特征进行简单操作并获得结果。由于文件是自我描述的,你甚至不需要了解应用格式就可以从文件中获取数据。你只需打开文件并浏览其内容:


screenshot

任何曾经在读取“简单”二进制格式文件上花费数小时琢磨字节偏移量的人都应该对此充满感激。

最后,HDF5文件的底层字节布局是开放的规格。比起专利软件的二进制格式,这里面没有任何隐秘。虽然基本上人们都会使用HDF组织提供的库来访问这些文件,但是你自己写一个软件去读也没有任何问题。

1.2.2 HDF5标准库

HDF5文件规格及开源库由一个非营利性组织HDF组织(http://www.hdfgroup.org )维护,其总部位于伊利诺伊州尚佩恩县,原本是伊利诺伊大学香槟分校的一部分。HDF组织的主要产品是HDF5标准库。

该库主要用C语言写成,对C++和Java有一些额外的绑定。人们说起“HDF5”时通常就是指这个库。两大脍炙人口的Python接口模块PyTables和h5py使用的就是这个由HDF组织提供的C库。

这个标准库最主要的一点在于开发者对它的积极维护以及在向下兼容方面花费的巨大精力。标准库的向下兼容不仅仅是API的兼容,亦包括文件格式的兼容。对于HDF5这样的归档文件格式来说,兼容性是一个非常必需的特性。而API兼容则使h5py和PyTables这样的模块有能力处理世界上各种不同版本的HDF5。

对于科学数据的存储,包括长期的存储,你应该对HDF5有信心。由于标准库和文件格式都是开源的,哪怕一颗流星摧毁了伊利诺伊州,你的文件依然能够被读取。

1.2.3 HDF5生态系统

最后,让HDF5特别有用的一个原因是你可以在几乎任何平台上读写文件。IDL语言已经支持HDF5好多年了;MATLAB现在甚至以HDF5作为其“.mat”保存文件的默认格式;Python、C++、Java、.NET和LabView以及其他语言对其都有支持。NASA地球观测系统等机构用户使用的“EOS5”格式是建立在HDF5容器之上的应用格式,刚才我们见到的其实是其简化以后的例子。甚至作为HDF5竞争对手之一的NetCDF,其最新的NetCDF4格式也是实现在HDF5的组、数据集和特征之上。

希望我上面介绍的这些能够让你了解HDF5在科学用途上所向披靡的原因。接下来,我们将看到HDF5工作的基本原理并开始在Python上使用它。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
1月前
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
17天前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
72 0
|
18天前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
24天前
|
数据采集 数据可视化 安全
基于python大数据的天气可视化分析预测系统
本研究探讨基于Python的天气预报数据可视化系统,旨在提升天气数据获取、分析与展示的效率与准确性。通过网络爬虫技术快速抓取实时天气数据,并运用数据可视化技术直观呈现天气变化趋势,为公众出行、农业生产及灾害预警提供科学支持,具有重要的现实意义与应用价值。
|
18天前
|
机器学习/深度学习 算法 安全
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
【强化学习应用(八)】基于Q-learning的无人机物流路径规划研究(Python代码实现)
|
1月前
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
27天前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
1月前
|
机器学习/深度学习 搜索推荐 算法
基于python大数据的口红商品分析与推荐系统
本研究基于Python大数据技术,构建口红商品分析与推荐系统,旨在解决口红市场产品同质化与消费者选择困难问题。通过分析颜色、质地、价格等多维度数据及用户行为,实现个性化推荐,提升购物体验与品牌营销效率,推动美妆行业数字化转型,具有重要现实意义与市场价值。
|
18天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
190 102

热门文章

最新文章

推荐镜像

更多