使用 ecCodes 的 BUFR 格式的 Pandas 阅读器。
项目描述
pdbufr
使用 ecCodes 的 BUFR 格式的 Pandas 阅读器。
具有开发状态Beta的功能:
从 BUFR 文件中提取观察值作为 Pandas DataFrame,
读取带有未压缩和压缩子集的 BUFR 3 和 4 文件,
支持所有现代版本的 Python 3.9、3.8、3.7、3.6 和 PyPy3,
适用于 Linux、MacOS 和 Windows,ecCodes C 库是唯一的二进制依赖项,
运动丰富的过滤引擎。
限制:
没有 conda-forge 包(还)。
安装
安装pdbufr依赖项的最简单方法是通过 Conda:
$ conda install -c conda-forge python-eccodes pandas
和pdbufr本身作为来自 PyPI 的 Python 包,具有:
$ pip install pdbufr
系统依赖
Python 模块依赖于 ECMWF ecCodes库,该库必须安装在系统上并作为共享库进行访问。一些 Linux 发行版提供了一个二进制版本,可以与标准包管理器一起安装。在 Ubuntu 18.04 上使用命令:
$ sudo apt-get install libeccodes0
在带有 HomeBrew 的 MacOS 上使用:
$ brew install eccodes
作为替代方案,您可以按照 https://software.ecmwf.int/wiki/display/ECC/ecCodes+installation上的说明安装官方源代码分发
您可以运行一个简单的 selfcheck 命令来确保您的系统设置正确:
$ python -m pdbufr selfcheck Found: ecCodes v2.19.0. Your system is ready.
用法
首先,您需要一个格式正确的 BUFR 文件,如果您手头没有,可以下载我们的 示例文件:
$ wget http://download.ecmwf.int/test-data/metview/gallery/temp.bufr
您可以使用ecCodes命令行工具bufr_ls和bufr_dump浏览该文件,以了解可用于选择您感兴趣的观察的结构和键/值。
pdbufr.read_bufr函数返回带有请求列的pandas.DataDrame 。它接受非常快的 BUFR 消息头上的查询过滤器和观察键上的查询过滤器。过滤器匹配精确值或列表中的值之一,并且所有过滤器必须匹配:
>>> import pdbufr
>>> df_all = pdbufr.read_bufr('temp.bufr', columns=('stationNumber', 'latitude', 'longitude'))
>>> df_all.head()
stationNumber latitude longitude
0 907 58.47 -78.08
1 823 53.75 -73.67
2 9 -90.00 0.00
3 486 18.43 -69.88
4 165 21.98 -159.33
>>> df_one = pdbufr.read_bufr(
... 'temp.bufr',
... columns=('stationNumber', 'latitude', 'longitude'),
... filters={'stationNumber': 907},
... )
>>> df_one.head()
stationNumber latitude longitude
0 907 58.47 -78.08
>>> df_two = pdbufr.read_bufr(
... 'temp.bufr',
... columns=('stationNumber', 'data_datetime', 'pressure', 'airTemperature'),
... filters={'stationNumber': [823, 9]},
... )
>>> df_two.head()
stationNumber pressure airTemperature data_datetime
0 823 100000.0 NaN 2008-12-08 12:00:00
1 823 97400.0 256.7 2008-12-08 12:00:00
2 823 93700.0 255.1 2008-12-08 12:00:00
3 823 92500.0 255.3 2008-12-08 12:00:00
4 823 90600.0 256.7 2008-12-08 12:00:00
>>> df_two.tail()
stationNumber pressure airTemperature data_datetime
190 9 2990.0 NaN 2008-12-08 12:00:00
191 9 2790.0 206.3 2008-12-08 12:00:00
192 9 2170.0 NaN 2008-12-08 12:00:00
193 9 2000.0 203.1 2008-12-08 12:00:00
194 9 1390.0 197.9 2008-12-08 12:00:00
贡献
主存储库托管在 GitHub 上,非常欢迎和赞赏测试、错误报告和贡献:
https://github.com/ecmwf/pdbufr
请参阅 CONTRIBUTING.rst 文档以获取最佳帮助方式。
首席开发人员:
主要贡献者:
伊恩·罗素- ECMWF
另外: - Daniel Lee - DWD,他贡献了 high_level_bufr 目录中的代码,最初是 eccodes-python 的一部分
另请参阅参与此项目的贡献者列表。
执照
版权所有 2019-欧洲中期天气预报中心 (ECMWF)。
根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可,否则您不得使用此文件。您可以在以下网址获取许可证副本:http: //www.apache.org/licenses/LICENSE-2.0。除非适用法律要求或书面同意,否则根据许可分发的软件将按“原样”分发,没有任何明示或暗示的保证或条件。有关许可下的特定语言管理权限和限制,请参阅许可。