Skip to main content

使用 ecCodes 的 BUFR 格式的 Pandas 阅读器。

项目描述

pdbufr

https://img.shields.io/pypi/v/pdbufr.svg

使用 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_lsbufr_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 文档以获取最佳帮助方式。

首席开发人员:

主要贡献者:

另外: - Daniel Lee - DWD,他贡献了 high_level_bufr 目录中的代码,最初是 eccodes-python 的一部分

另请参阅参与此项目的贡献者列表。

执照

版权所有 2019-欧洲中期天气预报中心 (ECMWF)。

根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非遵守许可,否则您不得使用此文件。您可以在以下网址获取许可证副本:http: //www.apache.org/licenses/LICENSE-2.0。除非适用法律要求或书面同意,否则根据许可分发的软件将按“原样”分发,没有任何明示或暗示的保证或条件。有关许可下的特定语言管理权限和限制,请参阅许可。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pdbufr-0.9.0.tar.gz (8.8 MB 查看哈希

已上传 source